<?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>184074</bug_id>
          
          <creation_ts>2018-03-28 02:18:16 -0700</creation_ts>
          <short_desc>We shouldn&apos;t recurse into the parser when gathering metadata about various function offsets</short_desc>
          <delta_ts>2018-06-29 17:56:32 -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>
          
          <blocked>184744</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Robin Morisset">rmorisset</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>bburg</cc>
    
    <cc>cdumez</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1409805</commentid>
    <comment_count>0</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-03-28 02:18:16 -0700</bug_when>
    <thetext>Fixing this will require quite a lot of plumbing, since throwing an exception needs both the ParserError and an ExecState, and there is a dozen levels to the call stack between the last place to get an ExecState and createExecutable (that currently crashes upon encountering a ParserError).
&lt;rdar://problem/37165897&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409806</commentid>
    <comment_count>1</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-03-28 02:18:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/37165897&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409833</commentid>
    <comment_count>2</comment_count>
      <attachid>336656</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-03-28 06:46:43 -0700</bug_when>
    <thetext>Created attachment 336656
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410252</commentid>
    <comment_count>3</comment_count>
      <attachid>336770</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-03-29 07:49:56 -0700</bug_when>
    <thetext>Created attachment 336770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410254</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-29 07:52:34 -0700</bug_when>
    <thetext>This patch modifies the JS builtins code generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-builtins-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410256</commentid>
    <comment_count>5</comment_count>
      <attachid>336770</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-29 07:53:40 -0700</bug_when>
    <thetext>Comment on attachment 336770
Patch

Attachment 336770 did not pass bindings-ews (mac):
Output: http://webkit-queues.webkit.org/results/7136916

New failing tests:
(JS) JSTestClassWithJSBuiltinConstructor.cpp
(JS) JSTestJSBuiltinConstructor.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410259</commentid>
    <comment_count>6</comment_count>
      <attachid>336771</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-03-29 08:03:41 -0700</bug_when>
    <thetext>Created attachment 336771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410264</commentid>
    <comment_count>7</comment_count>
      <attachid>336771</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-03-29 08:25:06 -0700</bug_when>
    <thetext>Comment on attachment 336771
Patch

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

r- because I think we should limit where the scope where it&apos;s &quot;acceptable&quot; to have a null ExecState since that&apos;s not true anywhere else.

&gt; Source/JavaScriptCore/Scripts/builtins/builtins_templates.py:105
&gt; +    return Expected&lt;JSC::FunctionExecutable*, JSC::ParserError&gt;(expectedUnlinked.value()-&gt;link(vm, vm.builtinExecutables()-&gt;codeName##Source(), std::nullopt, s_##codeName##Intrinsic));\\

Nit: I don&apos;t think you need the Expected constructor explicitly here.

&gt; Source/JavaScriptCore/Scripts/builtins/builtins_templates.py:117
&gt; +    return Expected&lt;JSC::FunctionExecutable*, JSC::ParserError&gt;(clientData-&gt;builtinFunctions().${objectNameLC}Builtins().codeName##Executable().value()-&gt;link(vm, clientData-&gt;builtinFunctions().${objectNameLC}Builtins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic)); \\

ditto.

&gt; Source/JavaScriptCore/Scripts/builtins/builtins_templates.py:129
&gt; +    return Expected&lt;JSC::FunctionExecutable*, JSC::ParserError&gt;(clientData-&gt;builtinFunctions().${objectNameLC}Builtins().codeName##Executable().value()-&gt;link(vm, clientData-&gt;builtinFunctions().${objectNameLC}Builtins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic)); \\

ditto.

&gt; Source/JavaScriptCore/Scripts/builtins/builtins_templates.py:179
&gt; +    return Expected&lt;JSC::UnlinkedFunctionExecutable*, JSC::ParserError&gt;(m_##name##Executable.get());\\

ditto.

&gt; Source/JavaScriptCore/builtins/BuiltinExecutables.h:41
&gt; +typedef Expected&lt;UnlinkedFunctionExecutable*, ParserError&gt; ExpectedUnlinkedFunctionExecutable;

Nit: We try to use &quot;using&quot; these days.

&gt; Source/JavaScriptCore/parser/ParserError.cpp:60
&gt; +    VM&amp; vm = exec-&gt;vm();

I think this will just crash if exec is nullptr. That sees not intended?

&gt; Source/JavaScriptCore/runtime/Lookup.h:324
&gt; +inline void reifyStaticProperty(VM&amp; vm, const ClassInfo* classInfo, const PropertyName&amp; propertyName, const HashTableValue&amp; value, JSObject&amp; thisObj, ExecState* exec = nullptr)

Nit: We don&apos;t usually set up our methods this way. I would move the ExecState to just after vm and change the call site below to pass nullptr.

I would also change the name to execForThrowing or something.

&gt; Source/JavaScriptCore/runtime/Lookup.h:326
&gt; +    ASSERT(&amp;vm == &amp;(exec-&gt;vm()));

Won&apos;t this crash if exec is nullptr?

&gt; Source/JavaScriptCore/runtime/Lookup.h:335
&gt; +            if (f.has_value())
&gt; +                thisObj.putDirectBuiltinFunction(vm, thisObj.globalObject(), propertyName, f.value(), attributesForStructure(value.attributes()));
&gt; +            else
&gt; +                f.error().throwStackOverflowOrOutOfMemory(exec);

It seems like you should handle nullptr exec here rather than in the throwStackOverflowOrOutOfMemory function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410277</commentid>
    <comment_count>8</comment_count>
      <attachid>336775</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-03-29 08:41:36 -0700</bug_when>
    <thetext>Created attachment 336775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410278</commentid>
    <comment_count>9</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-03-29 08:43:13 -0700</bug_when>
    <thetext>Thanks a lot for the review, and for catching the null pointer dereferences.
I have applied all of your suggestions, except for naming the variable execIfAvailable instead of execForThrowing (making it clearer to the caller that passing nullptr is ok).

(In reply to Keith Miller from comment #7)
&gt; Comment on attachment 336771 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=336771&amp;action=review
&gt; 
&gt; r- because I think we should limit where the scope where it&apos;s &quot;acceptable&quot;
&gt; to have a null ExecState since that&apos;s not true anywhere else.
&gt; 
&gt; &gt; Source/JavaScriptCore/Scripts/builtins/builtins_templates.py:105
&gt; &gt; +    return Expected&lt;JSC::FunctionExecutable*, JSC::ParserError&gt;(expectedUnlinked.value()-&gt;link(vm, vm.builtinExecutables()-&gt;codeName##Source(), std::nullopt, s_##codeName##Intrinsic));\\
&gt; 
&gt; Nit: I don&apos;t think you need the Expected constructor explicitly here.
&gt; 
&gt; &gt; Source/JavaScriptCore/Scripts/builtins/builtins_templates.py:117
&gt; &gt; +    return Expected&lt;JSC::FunctionExecutable*, JSC::ParserError&gt;(clientData-&gt;builtinFunctions().${objectNameLC}Builtins().codeName##Executable().value()-&gt;link(vm, clientData-&gt;builtinFunctions().${objectNameLC}Builtins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic)); \\
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/JavaScriptCore/Scripts/builtins/builtins_templates.py:129
&gt; &gt; +    return Expected&lt;JSC::FunctionExecutable*, JSC::ParserError&gt;(clientData-&gt;builtinFunctions().${objectNameLC}Builtins().codeName##Executable().value()-&gt;link(vm, clientData-&gt;builtinFunctions().${objectNameLC}Builtins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic)); \\
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/JavaScriptCore/Scripts/builtins/builtins_templates.py:179
&gt; &gt; +    return Expected&lt;JSC::UnlinkedFunctionExecutable*, JSC::ParserError&gt;(m_##name##Executable.get());\\
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/JavaScriptCore/builtins/BuiltinExecutables.h:41
&gt; &gt; +typedef Expected&lt;UnlinkedFunctionExecutable*, ParserError&gt; ExpectedUnlinkedFunctionExecutable;
&gt; 
&gt; Nit: We try to use &quot;using&quot; these days.
&gt; 
&gt; &gt; Source/JavaScriptCore/parser/ParserError.cpp:60
&gt; &gt; +    VM&amp; vm = exec-&gt;vm();
&gt; 
&gt; I think this will just crash if exec is nullptr. That sees not intended?
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/Lookup.h:324
&gt; &gt; +inline void reifyStaticProperty(VM&amp; vm, const ClassInfo* classInfo, const PropertyName&amp; propertyName, const HashTableValue&amp; value, JSObject&amp; thisObj, ExecState* exec = nullptr)
&gt; 
&gt; Nit: We don&apos;t usually set up our methods this way. I would move the
&gt; ExecState to just after vm and change the call site below to pass nullptr.
&gt; 
&gt; I would also change the name to execForThrowing or something.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/Lookup.h:326
&gt; &gt; +    ASSERT(&amp;vm == &amp;(exec-&gt;vm()));
&gt; 
&gt; Won&apos;t this crash if exec is nullptr?
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/Lookup.h:335
&gt; &gt; +            if (f.has_value())
&gt; &gt; +                thisObj.putDirectBuiltinFunction(vm, thisObj.globalObject(), propertyName, f.value(), attributesForStructure(value.attributes()));
&gt; &gt; +            else
&gt; &gt; +                f.error().throwStackOverflowOrOutOfMemory(exec);
&gt; 
&gt; It seems like you should handle nullptr exec here rather than in the
&gt; throwStackOverflowOrOutOfMemory function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410281</commentid>
    <comment_count>10</comment_count>
      <attachid>336775</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-03-29 08:55:57 -0700</bug_when>
    <thetext>Comment on attachment 336775
Patch

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410289</commentid>
    <comment_count>11</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-03-29 09:43:26 -0700</bug_when>
    <thetext>Michael: There appears to be a GCC crash (Internal Compiler Error) on both the gtk-wk2 and on the wpe bot. I do not see how to access the stack trace of the crashing GCC, or anything else required for reporting the bug.
Can you do it or at least point me in the right direction?
Thank you,
Robin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410321</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-03-29 11:16:33 -0700</bug_when>
    <thetext>My guess it that the compiler (actually its subprocess, cc1plus) was killed by the OOM killer: that&apos;s the usual reason for these errors. What&apos;s more worrying is that this happened on both the GTK and WPE bots at the same time. Also surprising is that it occurred on two different files (UnifiedSource20.cpp on the GTK bot, UnifiedSource215.cpp on the WPE bot).

The first thing I would try is uploading the same patch again and see if it passes EWS on a second round, since it might just be bad luck. Let&apos;s hope for that. If it fails a second time... well, these issues are the worst to debug. We&apos;ll have to try to reproduce it locally. The good news is that attachment #336771 passed EWS, and it&apos;s not much different from attachment #336775....

Carlos, what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410567</commentid>
    <comment_count>13</comment_count>
      <attachid>336848</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-03-30 02:02:14 -0700</bug_when>
    <thetext>Created attachment 336848
Trying again to check if EWS failure is deterministic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410573</commentid>
    <comment_count>14</comment_count>
      <attachid>336849</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-03-30 05:02:49 -0700</bug_when>
    <thetext>Created attachment 336849
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410576</commentid>
    <comment_count>15</comment_count>
      <attachid>336849</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-30 05:39:48 -0700</bug_when>
    <thetext>Comment on attachment 336849
Patch for landing

Clearing flags on attachment: 336849

Committed r230102: &lt;https://trac.webkit.org/changeset/230102&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410577</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-30 05:39:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410597</commentid>
    <comment_count>17</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-03-30 07:49:59 -0700</bug_when>
    <thetext>(In reply to Robin Morisset from comment #13)
&gt; Created attachment 336848 [details]
&gt; Trying again to check if EWS failure is deterministic

*Whew!*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410599</commentid>
    <comment_count>18</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-03-30 07:54:24 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #17)
&gt; (In reply to Robin Morisset from comment #13)
&gt; &gt; Created attachment 336848 [details]
&gt; &gt; Trying again to check if EWS failure is deterministic
&gt; 
&gt; *Whew!*

Thank you for your advice of trying again. I would not have guessed that the problem could be the OOM killer, and I was quite relieved when the bots turned green the second time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410600</commentid>
    <comment_count>19</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-03-30 08:03:08 -0700</bug_when>
    <thetext>The clue is here:

c++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See &lt;file:///usr/share/doc/gcc-6/README.Bugs&gt; for instructions.

That &quot;Killed&quot; means actual SIGKILL, and there are not many reasons that could ever happen since a crash would normally be SIGSEGV or SIGABRT or something like that... in practice, when building WebKit, experience says Killed means OOM. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410613</commentid>
    <comment_count>20</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-03-30 09:02:43 -0700</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #15)
&gt; Comment on attachment 336849 [details]
&gt; Patch for landing
&gt; 
&gt; Clearing flags on attachment: 336849
&gt; 
&gt; Committed r230102: &lt;https://trac.webkit.org/changeset/230102&gt;
This change caused assertion failures on JSC bots: https://build.webkit.org/builders/Apple%20High%20Sierra%2032-bit%20JSC%20%28BuildAndTest%29/builds/1539

slowMicrobenchmarks.yaml/slowMicrobenchmarks/to-lower-case.js.no-cjit: ERROR: Unchecked JS exception:
slowMicrobenchmarks.yaml/slowMicrobenchmarks/to-lower-case.js.no-cjit:     This scope can throw a JS exception: setUpStaticFunctionSlot @ ./runtime/Lookup.cpp:51
slowMicrobenchmarks.yaml/slowMicrobenchmarks/to-lower-case.js.no-cjit:         (ExceptionScope::m_recursionDepth was 3)
slowMicrobenchmarks.yaml/slowMicrobenchmarks/to-lower-case.js.no-cjit:     But the exception was unchecked as of this scope: getOwnStaticPropertySlot @ ./runtime/JSObject.cpp:2040
slowMicrobenchmarks.yaml/slowMicrobenchmarks/to-lower-case.js.no-cjit:         (ExceptionScope::m_recursionDepth was 2)
slowMicrobenchmarks.yaml/slowMicrobenchmarks/to-lower-case.js.no-cjit: 
slowMicrobenchmarks.yaml/slowMicrobenchmarks/to-lower-case.js.no-cjit: Unchecked exception detected at:
slowMicrobenchmarks.yaml/slowMicrobenchmarks/to-lower-case.js.no-cjit:     1   0x139b60d JSC::VM::verifyExceptionCheckNeedIsSatisfied(unsigned int, JSC::ExceptionEventLocation&amp;)
slowMicrobenchmarks.yaml/slowMicrobenchmarks/to-lower-case.js.no-cjit:     2   0x137596b JSC::ThrowScope::~ThrowScope()
slowMicrobenchmarks.yaml/slowMicrobenchmarks/to-lower-case.js.no-cjit:     3   0x1375cd7 JSC::ThrowScope::~ThrowScope()
slowMicrobenchmarks.yaml/slowMicrobenchmarks/to-lower-case.js.no-cjit:     4   0x12000fe JSC::JSObject::getOwnStaticPropertySlot(JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;)
slowMicrobenchmarks.yaml/slowMicrobenchmarks/to-lower-case.js.no-cjit:     5   0x382158 JSC::JSObject::getOwnNonIndexPropertySlot(JSC::ExecState*, JSC::Structure*, JSC::PropertyName, JSC::PropertySlot&amp;)
slowMicrobenchmarks.yaml/slowMicrobenchmarks/to-lower-case.js.no-cjit:     6   0x372cb2 JSC::JSObject::getOwnPropertySlot(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;)
slowMicrobenchmarks.yaml/slowMicrobenchmarks/to-lower-case.js.no-cjit:     7   0x11a81ca JSC::JSGlobalObject::init(JSC::VM&amp;)::$_36::operator()(JSC::JSObject*, JSC::Identifier const&amp;) const
slowMicrobenchmarks.yaml/slowMicrobenchmarks/to-lower-case.js.no-cjit:     8   0x1199963 JSC::JSGlobalObject::init(JSC::VM&amp;)
slowMicrobenchmarks.yaml/slowMicrobenchmarks/to-lower-case.js.no-cjit:     9   0x11aadf2 JSC::JSGlobalObject::finishCreation(JSC::VM&amp;)
slowMicrobenchmarks.yaml/slowMicrobenchmarks/to-lower-case.js.no-cjit:     10  0x3e6b4 GlobalObject::finishCreation(JSC::VM&amp;, WTF::Vector&lt;WTF::String, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt; const&amp;)
slowMicrobenchmarks.yaml/slowMicrobenchmarks/to-lower-case.js.no-cjit:     11  0x3d664 GlobalObject::create(JSC::VM&amp;, JSC::Structure*, WTF::Vector&lt;WTF::String, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt; const&amp;)
slowMicrobenchmarks.yaml/slowMicrobenchmarks/to-lower-case.js.no-cjit:     12  0x22e96 int runJSC&lt;jscmain(int, char**)::$_3&gt;(CommandLine, bool, jscmain(int, char**)::$_3 const&amp;)
slowMicrobenchmarks.yaml/slowMicrobenchmarks/to-lower-case.js.no-cjit:     13  0x2169f jscmain(int, char**)
slowMicrobenchmarks.yaml/slowMicrobenchmarks/to-lower-case.js.no-cjit:     14  0x215b7 main
slowMicrobenchmarks.yaml/slowMicrobenchmarks/to-lower-case.js.no-cjit:     15  0xa759f6e1 start</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410614</commentid>
    <comment_count>21</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-03-30 09:05:27 -0700</bug_when>
    <thetext>Reverted r230102 for reason:

Caused assertion failures on JSC bots.

Committed r230105: &lt;https://trac.webkit.org/changeset/230105&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410626</commentid>
    <comment_count>22</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-03-30 09:26:43 -0700</bug_when>
    <thetext>This change also broke builtins-generator-tests:
https://build.webkit.org/builders/Apple%20High%20Sierra%20Release%20WK2%20%28Tests%29/builds/3749

They may simply need to be rebaselined as part of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416207</commentid>
    <comment_count>23</comment_count>
      <attachid>338407</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-04-20 04:08:07 -0700</bug_when>
    <thetext>Created attachment 338407
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416208</commentid>
    <comment_count>24</comment_count>
      <attachid>338407</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-04-20 04:09:58 -0700</bug_when>
    <thetext>Comment on attachment 338407
Patch

I fixed the exception handling on the test-case that failed previously, hopefully it won&apos;t fail elsewhere.
I also reset the builtin-generator tests.

No significant change to the patch beyond that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416296</commentid>
    <comment_count>25</comment_count>
      <attachid>338407</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-04-20 10:04:25 -0700</bug_when>
    <thetext>Comment on attachment 338407
Patch

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

A few comments, otherwise r=me

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +        There are now bare calls to &apos;.value()&apos; on several paths that may crash. It is not a problem in my opinion, since we previously crashed in every case regardless of the path that took us to createExecutable when encountering a stack overflow.

Can you clarify here that calling foo.value() is critical compared to using *foo because the later is UB if the expected isn&apos;t &quot;valued&quot;. That distinction has surprised folks before for e.g. std::optional.

&gt; Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:70
&gt; +#include &lt;wtf/Expected.h&gt;

🎉

&gt; Source/JavaScriptCore/Scripts/builtins/builtins_templates.py:89
&gt; +    if (!expectedUnlinked.has_value())\\

The patter I prefer is:

if (auto expectedUnlinked = vm.foo.far())
  return expectedUnlinked-&gt;link(...);
else
  return makeUnexpected(expectedUnlinked.error()); // or if the E types are compatible, just return expectedUnlinked;

I&apos;d do the here and other places in this patch.

&gt; Source/JavaScriptCore/parser/ParserError.cpp:35
&gt; +JSObject* ParserError::toErrorObject(JSGlobalObject* globalObject, const SourceCode&amp; source, int overrideLineNumber)

Add a space between namespace and function.

&gt; Source/JavaScriptCore/parser/ParserError.cpp:43
&gt; +        auto line = overrideLineNumber == -1 ? m_line : overrideLineNumber;

I&apos;d make overrideLineNumber a std::optional&lt;int&gt; instead, and default to nullopt in the header.

&gt; Source/JavaScriptCore/parser/ParserError.cpp:92
&gt; +        return;

My preference is to have a toString method for the enum, and then have print call that:

const char* toString(ErrorType e)
{
  switch (e) {
  case None: return &quot;none&quot;;
  // ...
  }
}

void print(out, e) { return out.print(toString(e)); }

&gt; Source/JavaScriptCore/parser/ParserError.h:85
&gt; +    JS_EXPORT_PRIVATE JSObject* throwStackOverflowOrOutOfMemory(ExecState* = nullptr);

Why default to nullptr? It&apos;ll insta-crash if that&apos;s called.

&gt; Source/JavaScriptCore/runtime/Lookup.h:416
&gt; +        reifyStaticProperty(vm, nullptr, classInfo, key, value, thisObj);

Looks like reifyStaticProperties is called in CodeGeneratorJS.pm, which has access to exec through globalObject()-&gt;globalExec().
Otherwise there&apos;s bunch of tests in Source/WebCore/bindings/scripts/test/JS/ which we can probably assume don&apos;t throw.
You can probably pipe exec in this function too. Maybe in this patch or in a follow-up?

&gt; JSTests/stress/stack-overflow-while-parsing-builtin.js:1
&gt; +function f() {

You can add the following to control stack size and redone size and make the repro faster / trigger it:

//@ runDefault(&quot;--maxPerThreadStackUsage=1000000&quot;, &quot;--reservedZoneSize=0&quot;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416882</commentid>
    <comment_count>26</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-04-23 07:37:29 -0700</bug_when>
    <thetext>Thanks for the review!

(In reply to JF Bastien from comment #25)
&gt; Comment on attachment 338407 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=338407&amp;action=review
&gt; 
&gt; A few comments, otherwise r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:14
&gt; &gt; +        There are now bare calls to &apos;.value()&apos; on several paths that may crash. It is not a problem in my opinion, since we previously crashed in every case regardless of the path that took us to createExecutable when encountering a stack overflow.
&gt; 
&gt; Can you clarify here that calling foo.value() is critical compared to using
&gt; *foo because the later is UB if the expected isn&apos;t &quot;valued&quot;. That
&gt; distinction has surprised folks before for e.g. std::optional.

Done

&gt; 
&gt; &gt; Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:70
&gt; &gt; +#include &lt;wtf/Expected.h&gt;
&gt; 
&gt; 🎉
&gt; 
&gt; &gt; Source/JavaScriptCore/Scripts/builtins/builtins_templates.py:89
&gt; &gt; +    if (!expectedUnlinked.has_value())\\
&gt; 
&gt; The patter I prefer is:
&gt; 
&gt; if (auto expectedUnlinked = vm.foo.far())
&gt;   return expectedUnlinked-&gt;link(...);
&gt; else
&gt;   return makeUnexpected(expectedUnlinked.error()); // or if the E types are
&gt; compatible, just return expectedUnlinked;
&gt; 
&gt; I&apos;d do the here and other places in this patch.

That&apos;s a very nice pattern. I had not noticed that Expected&lt;&gt; converts to bool. I guess I was too used to strongly typed languages. I&apos;ve now used it everywhere I reasonably could.
On the other hand, I kept the (apparently redundant?!) use of makeUnexpected when the type changes, even if E is the same, to make things explicit.

&gt; 
&gt; &gt; Source/JavaScriptCore/parser/ParserError.cpp:35
&gt; &gt; +JSObject* ParserError::toErrorObject(JSGlobalObject* globalObject, const SourceCode&amp; source, int overrideLineNumber)
&gt; 
&gt; Add a space between namespace and function.
&gt; 
&gt; &gt; Source/JavaScriptCore/parser/ParserError.cpp:43
&gt; &gt; +        auto line = overrideLineNumber == -1 ? m_line : overrideLineNumber;
&gt; 
&gt; I&apos;d make overrideLineNumber a std::optional&lt;int&gt; instead, and default to
&gt; nullopt in the header.

I agree that it would be cleaner, but I would rather do it in a separate patch, this one is already pretty big (this use of -1 is from before my patch and the -1 appears to be propagated through quite a few places). Would you agree if I just open a new bug for that?

&gt; 
&gt; &gt; Source/JavaScriptCore/parser/ParserError.cpp:92
&gt; &gt; +        return;
&gt; 
&gt; My preference is to have a toString method for the enum, and then have print
&gt; call that:
&gt; 
&gt; const char* toString(ErrorType e)
&gt; {
&gt;   switch (e) {
&gt;   case None: return &quot;none&quot;;
&gt;   // ...
&gt;   }
&gt; }
&gt; 
&gt; void print(out, e) { return out.print(toString(e)); }

Done

&gt; 
&gt; &gt; Source/JavaScriptCore/parser/ParserError.h:85
&gt; &gt; +    JS_EXPORT_PRIVATE JSObject* throwStackOverflowOrOutOfMemory(ExecState* = nullptr);
&gt; 
&gt; Why default to nullptr? It&apos;ll insta-crash if that&apos;s called.

Good catch, this was a remnant from a previous version of this patch.

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/Lookup.h:416
&gt; &gt; +        reifyStaticProperty(vm, nullptr, classInfo, key, value, thisObj);
&gt; 
&gt; Looks like reifyStaticProperties is called in CodeGeneratorJS.pm, which has
&gt; access to exec through globalObject()-&gt;globalExec().
&gt; Otherwise there&apos;s bunch of tests in Source/WebCore/bindings/scripts/test/JS/
&gt; which we can probably assume don&apos;t throw.
&gt; You can probably pipe exec in this function too. Maybe in this patch or in a
&gt; follow-up?

In a follow-up please.

&gt; 
&gt; &gt; JSTests/stress/stack-overflow-while-parsing-builtin.js:1
&gt; &gt; +function f() {
&gt; 
&gt; You can add the following to control stack size and redone size and make the
&gt; repro faster / trigger it:
&gt; 
&gt; //@ runDefault(&quot;--maxPerThreadStackUsage=1000000&quot;, &quot;--reservedZoneSize=0&quot;)

Done


I&apos;ve also merged the patch for https://bugs.webkit.org/show_bug.cgi?id=184744, since it  is very closely linked, and cleans up some of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416884</commentid>
    <comment_count>27</comment_count>
      <attachid>338584</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-04-23 07:38:57 -0700</bug_when>
    <thetext>Created attachment 338584
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416903</commentid>
    <comment_count>28</comment_count>
      <attachid>338584</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-04-23 08:58:39 -0700</bug_when>
    <thetext>Comment on attachment 338584
Patch

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

If you want to fix https://bugs.webkit.org/show_bug.cgi?id=184744 you should also add the test from it. There&apos;s one comment that I think you need to address though, otherwise the fix is incorrect.

&gt; Source/JavaScriptCore/Scripts/tests/builtins/expected/JavaScriptCore-Builtin.prototype-Combined.js-result:290
&gt; +        return expectedUnlinked.value()-&gt;link(vm, vm.builtinExecutables()-&gt;codeName##Source(), std::nullopt, s_##codeName##Intrinsic);\

FWIW you  don&apos;t need &quot;.value()&quot; here: expected overload operator-&gt; and forwards to the value type already. It&apos;s UB to use operator-&gt; if it contains an error, but you&apos;ve already checked above.

I&apos;m not saying you should change it, it&apos;s just the style I prefer but either approach is fine with me.

&gt; Source/JavaScriptCore/builtins/BuiltinExecutables.cpp:133
&gt; +        if (!f.has_value())\

Yo can do the same pattern here.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3329
&gt; +            emitThrowRangeError(&quot;Stack overflow in the parser&quot;);

I don&apos;t think this is correct because you&apos;ll emit an exception. It&apos;ll correctly throw when we first try to execute, but then it goes into the code cache and will always throw, even if the stack wouldn&apos;t overflow anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419312</commentid>
    <comment_count>29</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-01 08:54:50 -0700</bug_when>
    <thetext>(In reply to JF Bastien from comment #28)
&gt; Comment on attachment 338584 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=338584&amp;action=review
&gt; 
&gt; If you want to fix https://bugs.webkit.org/show_bug.cgi?id=184744 you should
&gt; also add the test from it. There&apos;s one comment that I think you need to
&gt; address though, otherwise the fix is incorrect.
&gt; 
&gt; &gt; Source/JavaScriptCore/Scripts/tests/builtins/expected/JavaScriptCore-Builtin.prototype-Combined.js-result:290
&gt; &gt; +        return expectedUnlinked.value()-&gt;link(vm, vm.builtinExecutables()-&gt;codeName##Source(), std::nullopt, s_##codeName##Intrinsic);\
&gt; 
&gt; FWIW you  don&apos;t need &quot;.value()&quot; here: expected overload operator-&gt; and
&gt; forwards to the value type already. It&apos;s UB to use operator-&gt; if it contains
&gt; an error, but you&apos;ve already checked above.
&gt; 
&gt; I&apos;m not saying you should change it, it&apos;s just the style I prefer but either
&gt; approach is fine with me.
&gt; 
&gt; &gt; Source/JavaScriptCore/builtins/BuiltinExecutables.cpp:133
&gt; &gt; +        if (!f.has_value())\
&gt; 
&gt; Yo can do the same pattern here.
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3329
&gt; &gt; +            emitThrowRangeError(&quot;Stack overflow in the parser&quot;);
&gt; 
&gt; I don&apos;t think this is correct because you&apos;ll emit an exception. It&apos;ll
&gt; correctly throw when we first try to execute, but then it goes into the code
&gt; cache and will always throw, even if the stack wouldn&apos;t overflow anymore.

I think Robin&apos;s approach totally makes sense.  It&apos;s easy to do and it&apos;s better than crashing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419314</commentid>
    <comment_count>30</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-05-01 08:57:43 -0700</bug_when>
    <thetext>&gt; &gt; I don&apos;t think this is correct because you&apos;ll emit an exception. It&apos;ll
&gt; &gt; correctly throw when we first try to execute, but then it goes into the code
&gt; &gt; cache and will always throw, even if the stack wouldn&apos;t overflow anymore.
&gt; 
&gt; I think Robin&apos;s approach totally makes sense.  It&apos;s easy to do and it&apos;s
&gt; better than crashing.

As coded, the code cache will contain a function which always throws, even if there is enough stack space. The approach seems fine to me, as long as the entry doesn&apos;t stay in the cache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419342</commentid>
    <comment_count>31</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-05-01 10:35:49 -0700</bug_when>
    <thetext>(In reply to JF Bastien from comment #30)
&gt; &gt; &gt; I don&apos;t think this is correct because you&apos;ll emit an exception. It&apos;ll
&gt; &gt; &gt; correctly throw when we first try to execute, but then it goes into the code
&gt; &gt; &gt; cache and will always throw, even if the stack wouldn&apos;t overflow anymore.
&gt; &gt; 
&gt; &gt; I think Robin&apos;s approach totally makes sense.  It&apos;s easy to do and it&apos;s
&gt; &gt; better than crashing.
&gt; 
&gt; As coded, the code cache will contain a function which always throws, even
&gt; if there is enough stack space. The approach seems fine to me, as long as
&gt; the entry doesn&apos;t stay in the cache.

I don&apos;t think we should ever emit code for a stack overflow when parsing is what caused the stack overflow. I agree with JF here, this feels really nasty to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420112</commentid>
    <comment_count>32</comment_count>
      <attachid>339406</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-05-03 07:18:28 -0700</bug_when>
    <thetext>Created attachment 339406
Patch without the controversial part</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420114</commentid>
    <comment_count>33</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-05-03 07:22:41 -0700</bug_when>
    <thetext>(In reply to Robin Morisset from comment #32)
&gt; Created attachment 339406 [details]
&gt; Patch without the controversial part

I moved the controversial part out of this patch, since it was to fix the different (but related) https://bugs.webkit.org/show_bug.cgi?id=184744, and it is not entirely clear how to best fix it.

No other change to the rest of the patch. May I land this part since it has already been reviewed and there was no remaining issue? I am a bit afraid of the merge conflicts I will get if a patch that touches that many files remains in limbo for long.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420163</commentid>
    <comment_count>34</comment_count>
      <attachid>339406</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-05-03 09:33:37 -0700</bug_when>
    <thetext>Comment on attachment 339406
Patch without the controversial part

After a discussion with Saam, there might be a much simpler solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435026</commentid>
    <comment_count>35</comment_count>
      <attachid>343216</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-06-20 23:18:34 -0700</bug_when>
    <thetext>Created attachment 343216
WIP

a WIP for writing the mini builtin offsets parser. This code is pretty terrible. I&apos;m not sure if we should do it. But it probably works, at least for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437477</commentid>
    <comment_count>36</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-06-28 12:18:13 -0700</bug_when>
    <thetext>Will rebase the WIP. Still not sure if we want this approach for sure, but I&apos;ll get it into landing shape just in case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437514</commentid>
    <comment_count>37</comment_count>
      <attachid>343842</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-06-28 13:32:24 -0700</bug_when>
    <thetext>Created attachment 343842
WIP

Try EWS out</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437515</commentid>
    <comment_count>38</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-28 13:34:59 -0700</bug_when>
    <thetext>Attachment 343842 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/Nodes.cpp:283:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/parser/Nodes.cpp:284:  Missing space after ,  [whitespace/comma] [3]
ERROR: Source/JavaScriptCore/parser/Nodes.cpp:284:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/parser/Nodes.cpp:285:  Missing space after ,  [whitespace/comma] [3]
ERROR: Source/JavaScriptCore/parser/Nodes.cpp:285:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/parser/Nodes.cpp:286:  Missing space after ,  [whitespace/comma] [3]
ERROR: Source/JavaScriptCore/parser/Nodes.cpp:286:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/parser/Nodes.cpp:287:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/parser/Nodes.cpp:292:  Missing space after ,  [whitespace/comma] [3]
ERROR: Source/JavaScriptCore/builtins/BuiltinExecutables.cpp:258:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 10 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437572</commentid>
    <comment_count>39</comment_count>
      <attachid>343842</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-28 14:57:25 -0700</bug_when>
    <thetext>Comment on attachment 343842
WIP

Attachment 343842 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/8373449

New failing tests:
microbenchmarks/try-get-by-id-polymorphic.js.ftl-no-cjit-no-put-stack-validate
microbenchmarks/try-get-by-id-polymorphic.js.ftl-no-cjit-validate-sampling-profiler
microbenchmarks/try-get-by-id-polymorphic.js.ftl-eager-no-cjit-b3o1
microbenchmarks/try-get-by-id-polymorphic.js.no-ftl
microbenchmarks/try-get-by-id-polymorphic.js.dfg-eager-no-cjit-validate
microbenchmarks/try-get-by-id-polymorphic.js.dfg-maximal-flush-validate-no-cjit
microbenchmarks/try-get-by-id-polymorphic.js.dfg-eager
microbenchmarks/try-get-by-id-polymorphic.js.default
microbenchmarks/try-get-by-id-polymorphic.js.ftl-no-cjit-no-inline-validate
microbenchmarks/try-get-by-id-polymorphic.js.ftl-no-cjit-small-pool
microbenchmarks/try-get-by-id-polymorphic.js.ftl-no-cjit-b3o1
microbenchmarks/try-get-by-id-polymorphic.js.ftl-eager
microbenchmarks/try-get-by-id-polymorphic.js.ftl-eager-no-cjit
microbenchmarks/try-get-by-id-polymorphic.js.no-cjit-collect-continuously
microbenchmarks/try-get-by-id-polymorphic.js.no-cjit-validate-phases
microbenchmarks/try-get-by-id-polymorphic.js.no-llint
apiTests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437625</commentid>
    <comment_count>40</comment_count>
      <attachid>343871</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-06-28 16:51:10 -0700</bug_when>
    <thetext>Created attachment 343871
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437658</commentid>
    <comment_count>41</comment_count>
      <attachid>343871</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-28 18:12:05 -0700</bug_when>
    <thetext>Comment on attachment 343871
patch

Attachment 343871 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/8376067

New failing tests:
stress/dont-crash-on-stack-overflow-when-parsing-builtin.js.default
stress/dont-crash-on-stack-overflow-when-parsing-default-constructor.js.default
apiTests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437692</commentid>
    <comment_count>42</comment_count>
      <attachid>343871</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-06-28 21:15:20 -0700</bug_when>
    <thetext>Comment on attachment 343871
patch

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

r=me with fixes.  Please also investigate why the jsc EWS is unhappy.  Your newly added tests should not be failing.  Please fix.

&gt; JSTests/stress/dont-crash-on-stack-overflow-when-parsing-builtin.js:1
&gt; +//@ runDefault(&quot;--maxPerThreadStackUsage=10000&quot;, &quot;--reservedZoneSize=0&quot;)

Did you really intend for this test to only run with the default configuration?  If not, you can use requireOptions to specify the required options and run this test with all test configurations:
//@ requireOptions(&quot;--maxPerThreadStackUsage=10000&quot;, &quot; --reservedZoneSize=0&quot;)

&gt; JSTests/stress/dont-crash-on-stack-overflow-when-parsing-default-constructor.js:1
&gt; +//@ runDefault(&quot;--maxPerThreadStackUsage=10000&quot;, &quot;--reservedZoneSize=0&quot;)

Ditto.

&gt; Source/JavaScriptCore/ChangeLog:17
&gt; +        sync with the full parser.) The result of this is that BuiltinExecutbles::createExecutable
&gt; +        always succeeds.

Yay!  Can&apos;t argue with success.

&gt; Source/JavaScriptCore/builtins/BuiltinExecutables.cpp:94
&gt; +    RELEASE_ASSERT(view.length() &gt;= 14); // strlen(&quot;(function(){})&quot;) == 14

Shouldn&apos;t this be 15 because you&apos;re requiring a space between &quot;function&quot; and &quot;(&quot;?

&gt; Source/JavaScriptCore/builtins/BuiltinExecutables.cpp:143
&gt; +            if (i + 2 &lt; view.length() &amp;&amp; characters[i] == &apos;.&apos; &amp;&amp; characters[i + 1] == &apos;.&apos; &amp;&amp; characters[i + 2] == &apos;.&apos;)
&gt; +                hasRestParam = true;

If you&apos;ve processed the rest param already, you should add 2 to i because you&apos;re consuming 2 additional chars in addition to the one counted by ++i below.

&gt; Source/JavaScriptCore/builtins/BuiltinExecutables.cpp:177
&gt; +        if (!isInStrictContext &amp;&amp; (characters[i] == &apos;&quot;&apos; || characters[i] == &apos;\&apos;&apos;)) {
&gt; +            if (i + 1 + strlen(&quot;use strict&quot;) &lt;= view.length()) {
&gt; +                if (!memcmp(characters + i + 1, &quot;use strict&quot;, strlen(&quot;use strict&quot;)))
&gt; +                    isInStrictContext = true;
&gt; +            }
&gt; +        }

You should also require condition that characters[i + strlen(&quot;use strict&quot;) + 1] == characters[i] for the closing quote.

If you&apos;ve successfully matched &quot;use strict&quot;, you should also add 1 + strlen(&quot;use strict&quot;) to i so that we can skip ahead.

Technically, don&apos;t we also require a &apos;;&apos; after &quot;use strict&quot;?  Because &quot;use strict&quot; + &quot; with other stuff&quot; doesn&apos;t count as a strict mode declaration, no?  If a semi-colon is also required, let&apos;s add it to the verification and the count skipping above.

I would also suggest precaching strlen(&quot;use strict&quot;) into a variable (even if the compiler is smart enough to treat it as an intrinsic and replace it with a constant).

&gt; Source/JavaScriptCore/builtins/BuiltinExecutables.cpp:196
&gt; +    unsigned positionBeforeLastNewlineLineStartOffset = 0; // This is the second to last newline + 1.
&gt; +    for (int i = offsetOfLastNewline - 1; true; ) {
&gt; +        if (i &lt; 0)
&gt; +            break;
&gt; +        if (characters[i] == &apos;\n&apos;) {
&gt; +            positionBeforeLastNewlineLineStartOffset = i + 1;
&gt; +            break;
&gt; +        }
&gt; +        --i;
&gt; +    }

Why not just add track offsetOfSecondToLastNewLine in the first for loop above instead of iterating the characters again?

    unsigned offsetOfLastNewline = UINT_MAX;
    unsigned offsetOfSecondToLastNewline = UINT_MAX;
    for (unsigned i = 0; i &lt; view.length(); ++i) {
            ...
            offsetOfSecondToLastNewline = offsetOfLastNewline;
            offsetOfLastNewline = i;

And just RELEASE_ASSERT that offsetOfLastNewline and offsetOfSecondToLastNewline != UINT_MAX after the loop.  I think it&apos;s safe to assume that our builtins won&apos;t be in a single line).  If not (i.e. if we minify our builtin code and remove newlines in the future), then we need a handle the UINT_MAX offsets in some way as well.

With that, positionBeforeLastNewlineLineStartOffset = offsetOfSecondToLastNewline + 1;

&gt; Source/JavaScriptCore/builtins/BuiltinExecutables.cpp:216
&gt; +    if (!ASSERT_DISABLED || Options::validateBytecode()) {

Don&apos;t you want this to be a &amp;&amp; condition?  You&apos;re trying to not include this test code in a release build, right?

&gt; Source/JavaScriptCore/parser/Nodes.cpp:234
&gt; +        : Node(endLocation)
&gt; +        , m_startColumn(startColumn)
&gt; +        , m_endColumn(endColumn)
&gt; +        , m_functionKeywordStart(functionKeywordStart)
&gt; +        , m_functionNameStart(functionNameStart)
&gt; +        , m_parametersStart(parametersStart)
&gt; +        , m_startStartOffset(startLocation.startOffset)
&gt; +        , m_parameterCount(parameterCount)
&gt; +        , m_parseMode(mode)
&gt; +        , m_isInStrictContext(isInStrictContext)
&gt; +        , m_superBinding(static_cast&lt;unsigned&gt;(superBinding))
&gt; +        , m_constructorKind(static_cast&lt;unsigned&gt;(constructorKind))
&gt; +        , m_isArrowFunctionBodyExpression(isArrowFunctionBodyExpression)

I think WebKit style is to have these indented only by 4 spaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437822</commentid>
    <comment_count>43</comment_count>
      <attachid>343871</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-06-29 10:20:52 -0700</bug_when>
    <thetext>Comment on attachment 343871
patch

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

&gt;&gt; JSTests/stress/dont-crash-on-stack-overflow-when-parsing-builtin.js:1
&gt;&gt; +//@ runDefault(&quot;--maxPerThreadStackUsage=10000&quot;, &quot;--reservedZoneSize=0&quot;)
&gt; 
&gt; Did you really intend for this test to only run with the default configuration?  If not, you can use requireOptions to specify the required options and run this test with all test configurations:
&gt; //@ requireOptions(&quot;--maxPerThreadStackUsage=10000&quot;, &quot; --reservedZoneSize=0&quot;)

We can do this I suppose. I need to figure out why this fails on the bot but not locally for me

&gt;&gt; Source/JavaScriptCore/builtins/BuiltinExecutables.cpp:94
&gt;&gt; +    RELEASE_ASSERT(view.length() &gt;= 14); // strlen(&quot;(function(){})&quot;) == 14
&gt; 
&gt; Shouldn&apos;t this be 15 because you&apos;re requiring a space between &quot;function&quot; and &quot;(&quot;?

I just did 14 as bare minimum. I could make it 15 too, it doesn&apos;t matter

&gt;&gt; Source/JavaScriptCore/builtins/BuiltinExecutables.cpp:143
&gt;&gt; +                hasRestParam = true;
&gt; 
&gt; If you&apos;ve processed the rest param already, you should add 2 to i because you&apos;re consuming 2 additional chars in addition to the one counted by ++i below.

ok

&gt;&gt; Source/JavaScriptCore/builtins/BuiltinExecutables.cpp:177
&gt;&gt; +        }
&gt; 
&gt; You should also require condition that characters[i + strlen(&quot;use strict&quot;) + 1] == characters[i] for the closing quote.
&gt; 
&gt; If you&apos;ve successfully matched &quot;use strict&quot;, you should also add 1 + strlen(&quot;use strict&quot;) to i so that we can skip ahead.
&gt; 
&gt; Technically, don&apos;t we also require a &apos;;&apos; after &quot;use strict&quot;?  Because &quot;use strict&quot; + &quot; with other stuff&quot; doesn&apos;t count as a strict mode declaration, no?  If a semi-colon is also required, let&apos;s add it to the verification and the count skipping above.
&gt; 
&gt; I would also suggest precaching strlen(&quot;use strict&quot;) into a variable (even if the compiler is smart enough to treat it as an intrinsic and replace it with a constant).

We don&apos;t require a semi colon

&gt;&gt; Source/JavaScriptCore/builtins/BuiltinExecutables.cpp:216
&gt;&gt; +    if (!ASSERT_DISABLED || Options::validateBytecode()) {
&gt; 
&gt; Don&apos;t you want this to be a &amp;&amp; condition?  You&apos;re trying to not include this test code in a release build, right?

No, I want &quot;or&quot; here. I want this to run in our release tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437852</commentid>
    <comment_count>44</comment_count>
      <attachid>343871</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-06-29 12:08:24 -0700</bug_when>
    <thetext>Comment on attachment 343871
patch

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

&gt;&gt; Source/JavaScriptCore/parser/Nodes.cpp:234
&gt;&gt; +        , m_isArrowFunctionBodyExpression(isArrowFunctionBodyExpression)
&gt; 
&gt; I think WebKit style is to have these indented only by 4 spaces.

I agree, but I&apos;m going to just keep this consistent with the above constructor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437853</commentid>
    <comment_count>45</comment_count>
      <attachid>343926</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-06-29 12:12:01 -0700</bug_when>
    <thetext>Created attachment 343926
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437854</commentid>
    <comment_count>46</comment_count>
      <attachid>343927</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-06-29 12:13:41 -0700</bug_when>
    <thetext>Created attachment 343927
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437987</commentid>
    <comment_count>47</comment_count>
      <attachid>343927</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-29 16:40:32 -0700</bug_when>
    <thetext>Comment on attachment 343927
patch for landing

Clearing flags on attachment: 343927

Committed r233377: &lt;https://trac.webkit.org/changeset/233377&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437988</commentid>
    <comment_count>48</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-29 16:40:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438045</commentid>
    <comment_count>49</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-06-29 17:36:51 -0700</bug_when>
    <thetext>This change broke the Windows build:
https://build.webkit.org/builders/Apple%20Win%20Release%20%28Build%29/builds/10393</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438046</commentid>
    <comment_count>50</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-06-29 17:37:47 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #49)
&gt; This change broke the Windows build:
&gt; https://build.webkit.org/builders/Apple%20Win%20Release%20%28Build%29/builds/
&gt; 10393

looking</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438061</commentid>
    <comment_count>51</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-06-29 17:56:32 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #50)
&gt; (In reply to Ryan Haddad from comment #49)
&gt; &gt; This change broke the Windows build:
&gt; &gt; https://build.webkit.org/builders/Apple%20Win%20Release%20%28Build%29/builds/
&gt; &gt; 10393
&gt; 
&gt; looking

landed attempted fix:
https://trac.webkit.org/changeset/233383/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336656</attachid>
            <date>2018-03-28 06:46:43 -0700</date>
            <delta_ts>2018-03-29 07:49:52 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-184074-20180328154642.patch</filename>
            <type>text/plain</type>
            <size>64616</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5OTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MmNlZTg2MWU1YTU0M2I4Mjg4NGQwNWQzNmZkM2I1NTI3ZDc4NDgzLi42NmFmZWMzNGMxOTFjNmQ1
YTgyMzU3NmQ1YTY0NTI0ZDI0MjRlYjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MyBAQAorMjAxOC0wMy0yOCAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUu
Y29tPgorCisgICAgICAgIEEgc3RhY2sgb3ZlcmZsb3cgaW4gdGhlIHBhcnNpbmcgb2YgYSBidWls
dGluIChjYWxsZWQgYnkgY3JlYXRlRXhlY3V0YWJsZSkgY2F1c2UgYSBjcmFzaCBpbnN0ZWFkIG9m
IGEgY2F0Y2hhYmxlIGpzIGV4Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MDc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmlu
ZWRfaGVhZGVyLnB5OgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEhlYWRlckdlbmVyYXRvci5n
ZW5lcmF0ZV9mb3J3YXJkX2RlY2xhcmF0aW9ucyk6CisgICAgICAgIChQYXJzZXJFcnJvcik6Cisg
ICAgICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3QpOiBEZWxldGVkLgorICAgICAgICAo
Z2VuZXJhdGVfZXh0ZXJuc19mb3Jfb2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKGdlbmVyYXRl
X21hY3Jvc19mb3Jfb2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKGdlbmVyYXRlX3NlY3Rpb25f
Zm9yX2NvZGVfdGFibGVfbWFjcm8pOiBEZWxldGVkLgorICAgICAgICAoZ2VuZXJhdGVfc2VjdGlv
bl9mb3JfY29kZV9uYW1lX21hY3JvKTogRGVsZXRlZC4KKyAgICAgICAgKGdlbmVyYXRlX3NlY3Rp
b25fZm9yX2dsb2JhbF9wcml2YXRlX2NvZGVfbmFtZV9tYWNybyk6IERlbGV0ZWQuCisgICAgICAg
ICogU2NyaXB0cy9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHk6CisgICAgICAgICogU291
cmNlcy50eHQ6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZUNyZWF0b3Iu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwOgor
ICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1
dGFibGUpOgorICAgICAgICAoSlNDOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAg
IChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlckVy
cm9yLmg6CisgICAgICAgIChKU0M6OlBhcnNlckVycm9yOjp0b0Vycm9yT2JqZWN0KToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyRXJyb3I6OnRocm93U3RhY2tPdmVyZmxvd09yT3V0T2ZNZW1vcnkpOgor
ICAgICAgICAqIHJ1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OkFzeW5jSXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90
b3R5cGU6OmFkZEZ1bmN0aW9uUHJvcGVydGllcyk6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAg
ICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93
blN0YXRpY1Byb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpyZWlmeUFsbFN0
YXRpY1Byb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpnZXRQcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXROb25JbmRleFByb3BlcnR5U2xvdCk6CisgICAg
ICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvTG9va3VwLmNwcDoKKyAgICAgICAgKEpTQzo6cmVpZnlTdGF0aWNBY2Nlc3Nvcik6
CisgICAgICAgIChKU0M6OnNldFVwU3RhdGljRnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50
aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNQcm9wZXJ0eVNsb3RGcm9tVGFi
bGUpOgorICAgICAgICAoSlNDOjpyZWlmeVN0YXRpY1Byb3BlcnR5KToKKyAgICAgICAgKiBydW50
aW1lL01hcFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcFByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6U2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogdG9vbHMvSlNE
b2xsYXJWTS5jcHA6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlQnVpbHRpbik6CisKIDIw
MTgtMDMtMjUgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IHR5cG8gaW4gSlNDIG9wdGlvbiBuYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAxMTc0NjMxNmQ5OWQ3OTQ2MDE0NTg2NTQw
NWNiMDk3YTg2NWRjMjUuLjhjNWE1ZjlhOTFhYmQ1ZDdhOTJjNDc4Mjg4NWMwMTllMzdhNDc2OTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMDMtMjggIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlz
c2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBIHN0YWNrIG92ZXJmbG93IGluIHRoZSBwYXJzaW5n
IG9mIGEgYnVpbHRpbiAoY2FsbGVkIGJ5IGNyZWF0ZUV4ZWN1dGFibGUpIGNhdXNlIGEgY3Jhc2gg
aW5zdGVhZCBvZiBhIGNhdGNoYWJsZSBqcyBleGNlcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDA3NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisKIDIwMTgtMDMtMjUgIENhcmxvcyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6QGln
YWxpYS5jb20+CiAKICAgICAgICAgV2ViUHJvY2VzcyBtZW1vcnkgbW9uaXRvcjogdXNlICV6dSBm
b3JtYXQgc3BlY2lmaWVyIGZvciBzaXplX3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNTY3ODQyYTJkMzRhNTY4ODNhZGVkMmM1OWQxYTM0MTc4M2FkYjY1My4uOTkwMTgxZGE1YmVm
YzdiZWI5YWM4MmYzMzEzZTJmNDUyNTNjM2Y5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTE2NzQsNyArMTY3NCw2IEBACiAJCURDRjNENTZEMUNEMjk0NzYwMDNENUM2NSAvKiBM
YXp5UHJvcGVydHlJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBEQ0YzRDU2ODFDRDI5NDY4MDAzRDVDNjUgLyogTGF6eVByb3BlcnR5SW5saW5l
cy5oICovOyB9OwogCQlEQ0ZERkJEOTFEMUY1RDlCMDBGRTNENzIgLyogQjNCb3R0b21Qcm92aWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRENGREZC
RDcxRDFGNUQ5ODAwRkUzRDcyIC8qIEIzQm90dG9tUHJvdmlkZXIuaCAqLzsgfTsKIAkJRENGREZC
REExRDFGNUQ5RTAwRkUzRDcyIC8qIEIzVHlwZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRENGREZCRDgxRDFGNUQ5ODAwRkUzRDcyIC8qIEIzVHlw
ZU1hcC5oICovOyB9OwotCQlERTI2RTkwMzFDQjVERDA1MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1
dGFibGVDcmVhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBERTI2RTkwMjFDQjVERDA1MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9y
LmggKi87IH07CiAJCURFQTdFMjQ1MUJCQzY3N0YwMEQ3ODQ0MCAvKiBKU1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzkxN0U3QzFCNzkxMTA2MDAwRUJEMzMgLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxMjRB
OEY3MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8q
IE9wYXF1ZUpTU3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTMxNjE4MTMxRUM1RkUxNzAwMDZBMjE4IC8qIERPTUFubm90YXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMTYxODEwMUVD
NUZFMDgwMDA2QTIxOCAvKiBET01Bbm5vdGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ1MTAsOCArNDUwOSw2IEBACiAJCURDRjNENTY4
MUNEMjk0NjgwMDNENUM2NSAvKiBMYXp5UHJvcGVydHlJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IExhenlQcm9wZXJ0eUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRENGREZCRDcxRDFGNUQ5ODAwRkUzRDcyIC8qIEIzQm90dG9tUHJvdmlk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNCb3R0b21Qcm92aWRlci5o
OyBwYXRoID0gYjMvQjNCb3R0b21Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlEQ0ZERkJEODFEMUY1RDk4MDBGRTNENzIgLyogQjNUeXBlTWFwLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzVHlwZU1hcC5oOyBwYXRoID0gYjMvQjNUeXBlTWFwLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCURFMjZFOTAyMUNCNUREMDUwMEQyQkU4MiAv
KiBCdWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCURFMjZFOTA2MUNCNUREOTYwMEQyQkU4MiAvKiBCdWlsdGluRXhlY3V0YWJsZUNyZWF0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnVpbHRpbkV4ZWN1
dGFibGVDcmVhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREU1QTA5RkYx
QkEzQUMzRTAwM0Q0NDI0IC8qIEludHJpbnNpY0VtaXR0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW50cmluc2ljRW1pdHRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUxMjRBOEY1MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmlu
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcGFxdWVKU1N0cmluZy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTI0QThGNjBFNTU1Nzc1MDAzMDkxRjEgLyog
T3BhcXVlSlNTdHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
T3BhcXVlSlNTdHJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzkxMyw4
ICs3OTEwLDYgQEAKIAkJCQk1QjgyNDMwNDFEQjdBQTQ5MDBFQTYzODQgLyogQXN5bmNGdW5jdGlv
blByb3RvdHlwZS5qcyAqLywKIAkJCQk4QkMwNjQ4MjFFMTgwQjRBMDBCMkI4Q0EgLyogQXN5bmNH
ZW5lcmF0b3JQcm90b3R5cGUuanMgKi8sCiAJCQkJOEJDMDY0OTUxRTFEODM4QjAwQjJCOENBIC8q
IEFzeW5jSXRlcmF0b3JQcm90b3R5cGUuanMgKi8sCi0JCQkJREUyNkU5MDYxQ0I1REQ5NjAwRDJC
RTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5jcHAgKi8sCi0JCQkJREUyNkU5MDIxQ0I1
REQwNTAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5oICovLAogCQkJCUE3RDgw
MUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwICovLAogCQkJCUE3
RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLywKIAkJCQlF
MzgwRDY2QjFGMTkyNDlEMDBBNTkwOTUgLyogQnVpbHRpbk5hbWVzLmNwcCAqLywKQEAgLTgzNDYs
NyArODM0MSw2IEBACiAJCQkJOUI0Njk0MzkxRjk3NDM5RTAwQ0NCM0Y5IC8qIEJvb2xlYW5Qcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NkI3MzE5MUJEQTA2ODAwMDMzMUI4NCAvKiBC
b29sZWFuUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVBMDg2MjAxODJCN0Ew
NDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCURFMjZFOTAzMUNC
NUREMDUwMEQyQkU4MiAvKiBCdWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3NUVFOUIyMThBQUI3RTIwMEFBRDA0MyAvKiBCdWlsdGluTmFt
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5REEwMEE2MUJENTk5MzEwMEY0NTc1QyAvKiBidWls
dGlucy5weSBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaGVhZGVyLnB5IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVf
Y29tYmluZWRfaGVhZGVyLnB5CmluZGV4IGNkZTM1N2NkNDM5Y2VhZjQ0NjQyOGU2ODE4ODQ3ODA3
M2MwM2M0OWQuLjkzNjBjOTNiN2FjYmMwMjZmMmU5NDgyMjY1NTZlZjIyMmI2YjYwNDMgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dl
bmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkKQEAgLTY2
LDEyICs2NiwxNSBAQCBjbGFzcyBCdWlsdGluc0NvbWJpbmVkSGVhZGVyR2VuZXJhdG9yKEJ1aWx0
aW5zR2VuZXJhdG9yKToKICAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQogCiAg
ICAgZGVmIGdlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKHNlbGYpOgotICAgICAgICByZXR1
cm4gIiIibmFtZXNwYWNlIEpTQyB7CisgICAgICAgIHJldHVybiAiIiIjaW5jbHVkZSA8d3RmL0V4
cGVjdGVkLmg+CituYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNs
YXNzIFZNOworY2xhc3MgUGFyc2VyRXJyb3I7CiAKIGVudW0gY2xhc3MgQ29uc3RydWN0QWJpbGl0
eSA6IHVuc2lnbmVkOwotfSIiIgorfQorIiIiCiAKICAgICBkZWYgZ2VuZXJhdGVfc2VjdGlvbl9m
b3Jfb2JqZWN0KHNlbGYsIG9iamVjdCk6CiAgICAgICAgIGxpbmVzID0gW10KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRl
cy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3Rl
bXBsYXRlcy5weQppbmRleCA5MDdhNmQ3MTdjOTEwY2IwNzI5OTUwOWM2MWRmODQ2YTljNzAxZWZj
Li5iYmU3ZTQ3N2NhOGQ3YTRhNzRhYTM4MTg3NWYzNjQ5YWQ2NGUzNTI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMu
cHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNf
dGVtcGxhdGVzLnB5CkBAIC02OCwxNCArNjgsMTQgQEAgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogCiAgICAgQ29tYmluZWRIZWFkZXJTdGF0aWNNYWNyb3MgPSAoCiAgICAgIiIiI2Rl
ZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92
ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcXAotICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKyAgICBFeHBlY3RlZDxKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3Io
SlNDOjpWTSYpOwogCiAke21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUNMQVJF
X0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IiIiIp
CiAKICAgICBTZXBhcmF0ZUhlYWRlclN0YXRpY01hY3JvcyA9ICgKICAgICAiIiIjZGVmaW5lIERF
Q0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRl
bk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCi0gICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNv
ZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworICAgIEV4cGVjdGVkPEpTQzo6RnVuY3Rpb25F
eGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZN
Jik7CiAKICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RF
KERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVS
QVRPUiIiIikKQEAgLTgzLDkgKzgzLDEyIEBAICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmpl
Y3RNYWNyb31fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAgICAgQ29t
YmluZWRKU0NJbXBsZW1lbnRhdGlvblN0YXRpY01hY3JvcyA9ICgKICAgICAiIiIKICNkZWZpbmUg
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRk
ZW5OYW1lLCBhcmd1bWVudENvdW50KSBcXAotSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVO
YW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCitFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYg
dm0pIFxcCiB7XFwKLSAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1l
IyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFt
ZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisg
ICAgYXV0byBleHBlY3RlZFVubGlua2VkID0gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVO
YW1lIyNFeGVjdXRhYmxlKCk7XFwKKyAgICBpZiAoIWV4cGVjdGVkVW5saW5rZWQuaGFzX3ZhbHVl
KCkpXFwKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV4cGVjdGVkVW5saW5rZWQuZXJy
b3IoKSk7XFwKKyAgICAgICAgcmV0dXJuIEV4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
KiwgSlNDOjpQYXJzZXJFcnJvcj4oZXhwZWN0ZWRVbmxpbmtlZC52YWx1ZSgpLT5saW5rKHZtLCB2
bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQs
IHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKSk7XFwKIH0KICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hf
QlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJ
TFRJTl9HRU5FUkFUT1IKQEAgLTk0LDkgKzk3LDEyIEBAICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hf
QlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICAgICBTZXBhcmF0ZUpTQ0lt
cGxlbWVudGF0aW9uU3RhdGljTWFjcm9zID0gKAogICAgICIiIgogI2RlZmluZSBERUZJTkVfQlVJ
TFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFy
Z3VtZW50Q291bnQpIFxcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVy
YXRvcihKU0M6OlZNJiB2bSkgXFwKK0V4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwg
SlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKIHtc
XAotICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFi
bGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2Uo
KSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFwKKyAgICBhdXRvIGV4
cGVjdGVkVW5saW5rZWQgPSB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1
dGFibGUoKTtcXAorICAgIGlmICghZXhwZWN0ZWRVbmxpbmtlZC5oYXNfdmFsdWUoKSlcXAorICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXhwZWN0ZWRVbmxpbmtlZC5lcnJvcigpKTtcXAor
ICAgIHJldHVybiBFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2Vy
RXJyb3I+KGV4cGVjdGVkVW5saW5rZWQudmFsdWUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1
dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUj
I0ludHJpbnNpYykpO1xcCiB9CiAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99
X0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JV
SUxUSU5fR0VORVJBVE9SCkBAIC0xMDgsNyArMTE0LDcgQEAgJHttYWNyb1ByZWZpeH1fRk9SRUFD
SF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQog
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0p
IFxcCiB7XFwKICAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFxcCi0gICAgcmV0dXJuIGNsaWVudERhdGEt
PmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNF
eGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29i
amVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBz
XyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFxcCisgICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0
aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRh
YmxlKCkudmFsdWUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7
b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQs
IHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXFwKIH0KICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hf
QlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJ
TFRJTl9HRU5FUkFUT1IKQEAgLTEyMCw3ICsxMjYsNyBAQCAke21hY3JvUHJlZml4fV9GT1JFQUNI
X0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiBKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKIHtcXAogICAgIEpT
Vk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKTsgXFwKLSAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9u
cygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGlu
ayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0
aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50
cmluc2ljKTsgXFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7
b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS52YWx1ZSgpLT5s
aW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVp
bHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJ
bnRyaW5zaWMpOyBcXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9C
VUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlM
VElOX0dFTkVSQVRPUgpAQCAtMjAyLDcgKzIwOCw3IEBAIHB1YmxpYzoKIGlubGluZSB2b2lkICR7
b2JqZWN0TmFtZX1CdWlsdGluRnVuY3Rpb25zOjppbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKIHsKICNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9OKGNvZGVOYW1lLCBmdW5jdGlv
bk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpXFwKLSAgICBtXyMjZnVuY3Rpb25OYW1lIyNG
dW5jdGlvbi5zZXQobV92bSwgJmdsb2JhbE9iamVjdCwgSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGUo
bV92bSwgY29kZU5hbWUjI0dlbmVyYXRvcihtX3ZtKSwgJmdsb2JhbE9iamVjdCkpOworICAgIG1f
IyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
RnVuY3Rpb246OmNyZWF0ZShtX3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLnZhbHVlKCks
ICZnbG9iYWxPYmplY3QpKTsKICAgICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFj
cm99X0JVSUxUSU5fQ09ERShFWFBPUlRfRlVOQ1RJT04pCiAjdW5kZWYgRVhQT1JUX0ZVTkNUSU9O
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggZDdmNTAyM2Q2Y2QzNmE2ZjQxYTZh
M2Y0N2MzMWFhMzg1NTcxMWI3Yi4uOGRlYmI4NWI0ZTlkMjM0MDczMWYxYzcyZDMwMDY5NWRhN2Y2
YzYzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMTc4LDcgKzE3OCw2IEBAIGJp
bmRpbmdzL1NjcmlwdE9iamVjdC5jcHAKIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAogCiBidWls
dGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCi1idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZUNy
ZWF0b3IuY3BwCiBidWlsdGlucy9CdWlsdGluTmFtZXMuY3BwCiAKIGJ5dGVjb2RlL0FjY2Vzc0Nh
c2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVDcmVhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAyYjc5ZTdlNmVmOTVjZTIxYzQ0MzIzYTZlYTQxZDM2YTMzZmEzNTk1Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZUNyZWF0b3Iu
aCIKLQotI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsK
LQotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKFZN
JiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
Q29uc3RydWN0b3JLaW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgYWJpbGl0eSkKLXsKLSAgICBy
ZXR1cm4gQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKHZtLCBzb3VyY2UsIGlk
ZW50LCBraW5kLCBhYmlsaXR5KTsKLX0KLSAgICAKLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlQ3Jl
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxl
Q3JlYXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWMwODg0YjdiNjFkZjA4
MGNkYWMzYWU1Y2IyZDA2ZWUzMzVhZTEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZUNyZWF0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lu
Y2x1ZGUgIkNvbnN0cnVjdEFiaWxpdHkuaCIKLSNpbmNsdWRlICJQYXJzZXJNb2Rlcy5oIgotI2lu
Y2x1ZGUgIlNvdXJjZUNvZGUuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLUpTX0VYUE9SVF9QUklW
QVRFIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShW
TSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgQ29uc3RydWN0b3JLaW5k
LCBDb25zdHJ1Y3RBYmlsaXR5KTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4
IGFkMGQ4MzlhZTE5MTg0MDQ5M2M2NWZjNDI4MmQ0NzU1MjEwNzE2ZGMuLmFkNDMxM2YxNTUzMWZh
OTM2Zjk5OGQyOWM1MGNlYzJiOGE1MDFkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlBhcnNlci5oIgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUxLDI1ICs1MiwyNSBA
QCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVE
ZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydQogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpOb25l
OgogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6QmFzZToKLSAgICAg
ICAgcmV0dXJuIGNyZWF0ZUV4ZWN1dGFibGUobV92bSwgbWFrZVNvdXJjZShiYXNlQ29uc3RydWN0
b3JDb2RlLCB7IH0pLCBuYW1lLCBjb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHk6OkNh
bkNvbnN0cnVjdCk7CisgICAgICAgIHJldHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIG1ha2VT
b3VyY2UoYmFzZUNvbnN0cnVjdG9yQ29kZSwgeyB9KSwgbmFtZSwgY29uc3RydWN0b3JLaW5kLCBD
b25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QpLnZhbHVlKCk7CiAgICAgY2FzZSBDb25zdHJ1
Y3RvcktpbmQ6OkV4dGVuZHM6Ci0gICAgICAgIHJldHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0s
IG1ha2VTb3VyY2UoZGVyaXZlZENvbnN0cnVjdG9yQ29kZSwgeyB9KSwgbmFtZSwgY29uc3RydWN0
b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QpOworICAgICAgICByZXR1cm4g
Y3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBtYWtlU291cmNlKGRlcml2ZWRDb25zdHJ1Y3RvckNvZGUs
IHsgfSksIG5hbWUsIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3Ry
dWN0KS52YWx1ZSgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoY29uc3QgU291cmNlQ29kZSYgY29kZSwg
Y29uc3QgSWRlbnRpZmllciYgbmFtZSwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5
KQorRXhwZWN0ZWRVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBCdWlsdGluRXhlY3V0YWJsZXM6
OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvdXJjZUNvZGUmIGNvZGUsIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSkKIHsKICAg
ICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBjb2RlLCBuYW1lLCBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUsIGNvbnN0cnVjdEFiaWxpdHkpOwogfQogCiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBj
b2RlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFi
aWxpdHkpCiB7Ci0gICAgcmV0dXJuIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJs
ZSh2bSwgY29kZSwgbmFtZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBjb25zdHJ1Y3RBYmlsaXR5
KTsKKyAgICByZXR1cm4gQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKHZtLCBj
b2RlLCBuYW1lLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGNvbnN0cnVjdEFiaWxpdHkpLnZhbHVl
KCk7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6
OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0
IElkZW50aWZpZXImIG5hbWUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIENvbnN0
cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSkKK0V4cGVjdGVkVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUgQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBDb25zdHJ1Y3Rv
cktpbmQgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkp
CiB7CiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKICAgICBQ
YXJzZXJFcnJvciBlcnJvcjsKQEAgLTgzLDggKzg0LDggQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0
IFMKICAgICAgICAgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUsIGNvbnN0cnVjdG9yS2luZCk7
CiAKICAgICBpZiAoIXByb2dyYW0pIHsKLSAgICAgICAgZGF0YUxvZygiRmF0YWwgZXJyb3IgY29t
cGlsaW5nIGJ1aWx0aW4gZnVuY3Rpb24gJyIsIG5hbWUuc3RyaW5nKCksICInOiAiLCBlcnJvci5t
ZXNzYWdlKCkpOwotICAgICAgICBDUkFTSCgpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChlcnJv
ci5pc1ZhbGlkKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoV1RGTW92ZShlcnJv
cikpOwogICAgIH0KIAogICAgIFN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBwcm9ncmFt
LT5zaW5nbGVTdGF0ZW1lbnQoKTsKQEAgLTEwNiw3ICsxMDcsNyBAQCBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwg
Y29uc3QgUwogICAgIG1ldGFkYXRhLT5vdmVycmlkZU5hbWUobmFtZSk7CiAgICAgVmFyaWFibGVF
bnZpcm9ubWVudCBkdW1teVREWlZhcmlhYmxlczsKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNy
ZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFy
c2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgZHVtbXlURFpWYXJpYWJsZXMsIERlcml2ZWRDb250ZXh0
VHlwZTo6Tm9uZSwgV1RGTW92ZShwYXJlbnRTb3VyY2VPdmVycmlkZSkpOwotICAgIHJldHVybiBm
dW5jdGlvbkV4ZWN1dGFibGU7CisgICAgcmV0dXJuIEV4cGVjdGVkVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUoZnVuY3Rpb25FeGVjdXRhYmxlKTsKIH0KIAogdm9pZCBCdWlsdGluRXhlY3V0YWJs
ZXM6OmZpbmFsaXplKEhhbmRsZTxVbmtub3duPiwgdm9pZCogY29udGV4dCkKQEAgLTExNSwxNSAr
MTE2LDE4IEBAIHZvaWQgQnVpbHRpbkV4ZWN1dGFibGVzOjpmaW5hbGl6ZShIYW5kbGU8VW5rbm93
bj4sIHZvaWQqIGNvbnRleHQpCiB9CiAKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJM
RVMobmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZU5hbWUsIGxlbmd0aCkgXAotVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6bmFtZSMjRXhlY3V0YWJsZSgp
IFwKK0V4cGVjdGVkVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgQnVpbHRpbkV4ZWN1dGFibGVz
OjpuYW1lIyNFeGVjdXRhYmxlKCkgXAoge1wKICAgICBpZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxl
KSB7XAogICAgICAgICBJZGVudGlmaWVyIGV4ZWN1dGFibGVOYW1lID0gbV92bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5mdW5jdGlvbk5hbWUjI1B1YmxpY05hbWUoKTtcCiAgICAgICAg
IGlmIChvdmVycmlkZU5hbWUpXAogICAgICAgICAgICAgZXhlY3V0YWJsZU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZtX3ZtLCBvdmVycmlkZU5hbWUpO1wKLSAgICAgICAgbV8jI25hbWUj
I0V4ZWN1dGFibGUgPSBXZWFrPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPihjcmVhdGVCdWls
dGluRXhlY3V0YWJsZShtXyMjbmFtZSMjU291cmNlLCBleGVjdXRhYmxlTmFtZSwgc18jI25hbWUj
I0NvbnN0cnVjdEFiaWxpdHkpLCB0aGlzLCAmbV8jI25hbWUjI0V4ZWN1dGFibGUpO1wKKyAgICAg
ICAgRXhwZWN0ZWRVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmID0gY3JlYXRlQnVpbHRpbkV4
ZWN1dGFibGUobV8jI25hbWUjI1NvdXJjZSwgZXhlY3V0YWJsZU5hbWUsIHNfIyNuYW1lIyNDb25z
dHJ1Y3RBYmlsaXR5KTtcCisgICAgICAgIGlmICghZi5oYXNfdmFsdWUoKSlcCisgICAgICAgICAg
ICByZXR1cm4gZjtcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gV2VhazxVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZT4oZi52YWx1ZSgpLCB0aGlzLCAmbV8jI25hbWUjI0V4ZWN1dGFi
bGUpO1wKICAgICB9XAotICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcCisg
ICAgcmV0dXJuIEV4cGVjdGVkVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUobV8jI25hbWUjI0V4
ZWN1dGFibGUuZ2V0KCkpO1wKIH0KIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJ
TFRJTl9FWEVDVVRBQkxFUykKICN1bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VTCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKaW5k
ZXggMzY4YTMxYjdhY2I2YTMyYzlkNThlNWRlMjgwMWMyODliYmY1MmEyZi4uMTRkMzg3NWRlMThi
NThkNmQ5YTIwNjY0ZDQzMmViYmY1MmY4YzI5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaApAQCAtMjYsMTAgKzI2LDExIEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCi0jaW5jbHVkZSAiUGFy
c2VyTW9kZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJTb3VyY2VDb2RlLmgi
CiAjaW5jbHVkZSAiV2Vhay5oIgogI2luY2x1ZGUgIldlYWtIYW5kbGVPd25lci5oIgorI2luY2x1
ZGUgPHd0Zi9FeHBlY3RlZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMzcsMTMgKzM4LDE1
IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgSWRlbnRpZmllcjsK
IGNsYXNzIFZNOwogCit0eXBlZGVmIEV4cGVjdGVkPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiwgUGFyc2VyRXJyb3I+IEV4cGVjdGVkVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CisKIGNs
YXNzIEJ1aWx0aW5FeGVjdXRhYmxlcyBmaW5hbDogcHJpdmF0ZSBXZWFrSGFuZGxlT3duZXIgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEJ1aWx0
aW5FeGVjdXRhYmxlcyhWTSYpOwogCiAjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVT
KG5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGxlbmd0aCkgXAotVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXAorRXhwZWN0ZWRVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSBuYW1lIyNFeGVjdXRhYmxlKCk7IFwKIGNvbnN0IFNvdXJjZUNv
ZGUmIG5hbWUjI1NvdXJjZSgpIHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KICAgICAKICAg
ICBKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCkBA
IC01MSwxMyArNTQsMTMgQEAgY29uc3QgU291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgeyByZXR1
cm4gbV8jI25hbWUjI1NvdXJjZTsgfQogCiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IGNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvcihDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZp
ZXImIG5hbWUpOwogCi0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVh
dGVFeGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBD
b25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHkpOworICAgIHN0YXRpYyBFeHBlY3RlZFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGNyZWF0ZUV4ZWN1dGFibGUoVk0mLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIENvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJp
bGl0eSk7CiBwcml2YXRlOgogICAgIHZvaWQgZmluYWxpemUoSGFuZGxlPFVua25vd24+LCB2b2lk
KiBjb250ZXh0KSBvdmVycmlkZTsKIAogICAgIFZNJiBtX3ZtOwogCi0gICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvdXJjZUNvZGUm
LCBjb25zdCBJZGVudGlmaWVyJiwgQ29uc3RydWN0QWJpbGl0eSk7CisgICAgRXhwZWN0ZWRVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3Vy
Y2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIENvbnN0cnVjdEFiaWxpdHkpOwogCiAjZGVmaW5l
IERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJy
aWRkZW5OYW1lLCBsZW5ndGgpXAogICAgIFNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJjZTsgXApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJFcnJvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJFcnJvci5oCmluZGV4IDc4ODNlZmVk
MjI1MDIyYzAyMDZiNzg2NDBiNWE3MTc4OWQ5Y2VhNTIuLmVmNTFhMTIyYTY3NjhjY2ZmYmYzNTk3
OTM0MzY1Y2NlYmM4YjM1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ckVycm9yLmgKQEAgLTEwNiw4ICsxMDYsMzIgQEAgcHVibGljOgogICAgICAgICBjYXNlIE91dE9m
TWVtb3J5OgogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoZXhlYyk7
CiAgICAgICAgIH0KLSAgICAgICAgQ1JBU0goKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgSlNPYmpl
Y3QqIHRocm93U3RhY2tPdmVyZmxvd09yT3V0T2ZNZW1vcnkoRXhlY1N0YXRlKiBleGVjID0gbnVs
bHB0cikKKyAgICB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgc3dpdGNoIChtX3R5cGUp
IHsKKyAgICAgICAgY2FzZSBFcnJvck5vbmU6CisgICAgICAgIGNhc2UgRXZhbEVycm9yOgorICAg
ICAgICBjYXNlIFN5bnRheEVycm9yOgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgY2FzZSBTdGFja092ZXJmbG93OgorICAgICAgICAgICAgaWYgKCFl
eGVjKSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJIaXQgYSBzdGFjayBvdmVyZmxvdyB3
aGlsZSBwYXJzaW5nLCBkaWQgbm90IGhhdmUgYW4gRXhlY1N0YXRlIHRvIHByb2R1Y2UgYSByZWNv
dmVyYWJsZSBqcyBleGNlcHRpb24iKTsKKyAgICAgICAgICAgICAgICBDUkFTSCgpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMs
IHNjb3BlKTsKKyAgICAgICAgY2FzZSBPdXRPZk1lbW9yeToKKyAgICAgICAgICAgIGlmICghZXhl
YykgeworICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiSGl0IGEgc3RhY2sgb3ZlcmZsb3cgd2hp
bGUgcGFyc2luZywgZGlkIG5vdCBoYXZlIGFuIEV4ZWNTdGF0ZSB0byBwcm9kdWNlIGEgcmVjb3Zl
cmFibGUganMgZXhjZXB0aW9uIik7CisgICAgICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2Nv
cGUpOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCA4MDBjZmEwOTY0MWMwY2EyODA4
ZjA1NjAxMmVkYTNkMDIzMjIzN2Y3Li4xNzYxOTkwOWM1M2Y0ZmQ1MGNiMmQzNGNiNGQ4YTI0YjQ3
MmI5MTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0l0
ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
c3luY0l0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtNDEsNyArNDEsNyBAQCB2b2lkIEFzeW5jSXRl
cmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdAogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CiAgICAgZGlkQmVj
b21lUHJvdG90eXBlKCk7CiAKLSAgICBKU0Z1bmN0aW9uKiBhc3luY0l0ZXJhdG9yUHJvdG90eXBl
RnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGFzeW5jSXRlcmF0b3JQcm90b3R5cGVT
eW1ib2xBc3luY0l0ZXJhdG9yR2V0dGVyQ29kZUdlbmVyYXRvcih2bSksIGdsb2JhbE9iamVjdCk7
CisgICAgSlNGdW5jdGlvbiogYXN5bmNJdGVyYXRvclByb3RvdHlwZUZ1bmN0aW9uID0gSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBhc3luY0l0ZXJhdG9yUHJvdG90eXBlU3ltYm9sQXN5bmNJdGVyYXRv
ckdldHRlckNvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIGdsb2JhbE9iamVjdCk7CiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmFzeW5jSXRlcmF0
b3JTeW1ib2wsIGFzeW5jSXRlcmF0b3JQcm90b3R5cGVGdW5jdGlvbiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKaW5kZXggZDBm
ZDc2MjQ3Y2JjMTZiNjBhNGJhMmU0ZDNiMzVlODhlNmU0OWZkOS4uYTZlZDM1YTAwNmY0ODIwMDc3
Y2RmZTdhZjlkMTNjNDI4MDE0Mzg3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtNjMsMTEgKzYzLDExIEBAIHZvaWQg
RnVuY3Rpb25Qcm90b3R5cGU6OmFkZEZ1bmN0aW9uUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgSlNGdW5jdGlvbiogdG9TdHJpbmdGdW5jdGlvbiA9IEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT50
b1N0cmluZy5zdHJpbmcoKSwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk7CiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nLCB0b1N0
cmluZ0Z1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSk7CiAKLSAgICAqYXBwbHlGdW5jdGlvbiA9IHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmFwcGx5UHVibGljTmFtZSgpLCBmdW5jdGlvblByb3RvdHlwZUFwcGx5Q29k
ZUdlbmVyYXRvcih2bSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTsKLSAgICAqY2FsbEZ1bmN0aW9uID0gcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuY2FsbFB1YmxpY05hbWUoKSwgZnVuY3Rpb25Qcm90b3R5cGVDYWxsQ29kZUdl
bmVyYXRvcih2bSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKLSAgICBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5iaW5kLCBmdW5jdGlvblByb3RvdHlw
ZUJpbmRDb2RlR2VuZXJhdG9yKHZtKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSkpOworICAgICphcHBseUZ1bmN0aW9uID0gcHV0RGlyZWN0QnVpbHRp
bkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuYXBwbHlQdWJsaWNOYW1lKCksIGZ1bmN0aW9uUHJvdG90eXBl
QXBwbHlDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgKmNhbGxGdW5jdGlvbiA9IHB1dERpcmVj
dEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmNhbGxQdWJsaWNOYW1lKCksIGZ1bmN0aW9uUHJv
dG90eXBlQ2FsbENvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3RCdWlsdGluRnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVz
LT5iaW5kLCBmdW5jdGlvblByb3RvdHlwZUJpbmRDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKLSAg
ICAqaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVu
Y3Rpb25Qcm90b3R5cGVTeW1ib2xIYXNJbnN0YW5jZUNvZGVHZW5lcmF0b3Iodm0pLCBnbG9iYWxP
YmplY3QpOworICAgICpoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBmdW5jdGlvblByb3RvdHlwZVN5bWJvbEhhc0luc3RhbmNlQ29kZUdlbmVyYXRvcih2
bSkudmFsdWUoKSwgZ2xvYmFsT2JqZWN0KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aGFzSW5zdGFuY2VTeW1ib2wsICpoYXNJbnN0YW5jZVN5
bWJvbEZ1bmN0aW9uLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
aW5kZXggOGY4NDBjYzQ3ZGY0MjM1NTBkNTNjNDg2ODUzY2RiZDljYmFhNmU1ZS4uZDlhOWEyNzAx
Y2E2ZDg0MTE4YWY5NjMyNmVjZDIyYTE5Y2RhYTQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNDQzLDI0ICs0NDMsMjQgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgIH0pOwogICAgIG1fYXJy
YXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRp
YWxpemVyPEpTRnVuY3Rpb24+JiBpbml0KSB7Ci0gICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0
aW9uOjpjcmVhdGUoaW5pdC52bSwgYXJyYXlQcm90b3R5cGVWYWx1ZXNDb2RlR2VuZXJhdG9yKGlu
aXQudm0pLCBpbml0Lm93bmVyKSk7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpj
cmVhdGUoaW5pdC52bSwgYXJyYXlQcm90b3R5cGVWYWx1ZXNDb2RlR2VuZXJhdG9yKGluaXQudm0p
LnZhbHVlKCksIGluaXQub3duZXIpKTsKICAgICAgICAgfSk7CiAgICAgbV9pbml0aWFsaXplUHJv
bWlzZUZ1bmN0aW9uLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpT
RnVuY3Rpb24+JiBpbml0KSB7Ci0gICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVh
dGUoaW5pdC52bSwgcHJvbWlzZU9wZXJhdGlvbnNJbml0aWFsaXplUHJvbWlzZUNvZGVHZW5lcmF0
b3IoaW5pdC52bSksIGluaXQub3duZXIpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rp
b246OmNyZWF0ZShpbml0LnZtLCBwcm9taXNlT3BlcmF0aW9uc0luaXRpYWxpemVQcm9taXNlQ29k
ZUdlbmVyYXRvcihpbml0LnZtKS52YWx1ZSgpLCBpbml0Lm93bmVyKSk7CiAgICAgICAgIH0pOwog
CiAgICAgbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24uaW5pdExhdGVyKAogICAgICAgICBbXSAo
Y29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKLSAgICAgICAgICAgIGluaXQu
c2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBpdGVyYXRvckhlbHBlcnNQZXJmb3JtSXRl
cmF0aW9uQ29kZUdlbmVyYXRvcihpbml0LnZtKSwgaW5pdC5vd25lcikpOworICAgICAgICAgICAg
aW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGl0ZXJhdG9ySGVscGVyc1BlcmZv
cm1JdGVyYXRpb25Db2RlR2VuZXJhdG9yKGluaXQudm0pLnZhbHVlKCksIGluaXQub3duZXIpKTsK
ICAgICAgICAgfSk7CiAKICAgICBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24uaW5pdExhdGVyKAog
ICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKLSAgICAg
ICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBwcm9taXNlQ29uc3Ry
dWN0b3JSZXNvbHZlQ29kZUdlbmVyYXRvcihpbml0LnZtKSwgaW5pdC5vd25lcikpOworICAgICAg
ICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIHByb21pc2VDb25zdHJ1
Y3RvclJlc29sdmVDb2RlR2VuZXJhdG9yKGluaXQudm0pLnZhbHVlKCksIGluaXQub3duZXIpKTsK
ICAgICAgICAgfSk7CiAKLSAgICBtX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24uc2V0KHZt
LCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHByb21pc2VPcGVyYXRpb25zTmV3UHJvbWlz
ZUNhcGFiaWxpdHlDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcykpOworICAgIG1fbmV3UHJvbWlzZUNh
cGFiaWxpdHlGdW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgcHJv
bWlzZU9wZXJhdGlvbnNOZXdQcm9taXNlQ2FwYWJpbGl0eUNvZGVHZW5lcmF0b3Iodm0pLnZhbHVl
KCksIHRoaXMpKTsKICAgICBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9u
LnNldCh2bSwgdGhpcywgaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7CiAgICAgbV90aHJvd1R5
cGVFcnJvckdldHRlclNldHRlci5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFs
aXplcjxHZXR0ZXJTZXR0ZXI+JiBpbml0KSB7CkBAIC00OTEsNyArNDkxLDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+aW5pdFJl
c3RyaWN0ZWRQcm9wZXJ0aWVzKGV4ZWMsIHRoaXMpOwogCiAgICAgbV9zcGVjaWVzR2V0dGVyU2V0
dGVyLnNldCh2bSwgdGhpcywgR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIHRoaXMpKTsKLSAgICBt
X3NwZWNpZXNHZXR0ZXJTZXR0ZXItPnNldEdldHRlcih2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPcGVyYXRpb25zU3BlY2llc0dldHRlckNvZGVHZW5lcmF0b3Iodm0pLCB0
aGlzKSk7CisgICAgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLT5zZXRHZXR0ZXIodm0sIHRoaXMsIEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT3BlcmF0aW9uc1NwZWNpZXNHZXR0ZXJDb2RlR2Vu
ZXJhdG9yKHZtKS52YWx1ZSgpLCB0aGlzKSk7CiAKICAgICBtX3R5cGVkQXJyYXlQcm90by5pbml0
TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxKU1R5cGVkQXJyYXlWaWV3UHJv
dG90eXBlPiYgaW5pdCkgewpAQCAtNTEzLDcgKzUxMyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OmluaXQoVk0mIHZtKQogICAgICAgICBbXSAoTGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXpl
ciYgaW5pdCkgeyBcCiAgICAgICAgICAgICBpbml0LnNldFByb3RvdHlwZShKUyAjIyB0eXBlICMj
IEFycmF5UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIEpTICMjIHR5cGUg
IyMgQXJyYXlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lmdsb2JhbCwg
aW5pdC5nbG9iYWwtPm1fdHlwZWRBcnJheVByb3RvLmdldChpbml0Lmdsb2JhbCkpKSk7IFwKICAg
ICAgICAgICAgIGluaXQuc2V0U3RydWN0dXJlKEpTICMjIHR5cGUgIyMgQXJyYXk6OmNyZWF0ZVN0
cnVjdHVyZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5wcm90b3R5cGUpKTsgXAotICAgICAg
ICAgICAgaW5pdC5zZXRDb25zdHJ1Y3RvcihKUyAjIyB0eXBlICMjIEFycmF5Q29uc3RydWN0b3I6
OmNyZWF0ZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgSlMgIyMgdHlwZSAjIyBBcnJheUNvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGluaXQuZ2xvYmFsLT5t
X3R5cGVkQXJyYXlTdXBlckNvbnN0cnVjdG9yLmdldChpbml0Lmdsb2JhbCkpLCBpbml0LnByb3Rv
dHlwZSwgQVNDSUlMaXRlcmFsKCN0eXBlICJBcnJheSIpLCB0eXBlZEFycmF5Q29uc3RydWN0b3JB
bGxvY2F0ZSAjIyB0eXBlICMjIEFycmF5Q29kZUdlbmVyYXRvcihpbml0LnZtKSkpOyBcCisgICAg
ICAgICAgICBpbml0LnNldENvbnN0cnVjdG9yKEpTICMjIHR5cGUgIyMgQXJyYXlDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBKUyAjIyB0eXBlICMjIEFycmF5Q29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwt
Pm1fdHlwZWRBcnJheVN1cGVyQ29uc3RydWN0b3IuZ2V0KGluaXQuZ2xvYmFsKSksIGluaXQucHJv
dG90eXBlLCBBU0NJSUxpdGVyYWwoI3R5cGUgIkFycmF5IiksIHR5cGVkQXJyYXlDb25zdHJ1Y3Rv
ckFsbG9jYXRlICMjIHR5cGUgIyMgQXJyYXlDb2RlR2VuZXJhdG9yKGluaXQudm0pLnZhbHVlKCkp
KTsgXAogICAgICAgICAgICAgaW5pdC5nbG9iYWwtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KGluaXQudm0sIGluaXQudm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudHlwZSAjIyBB
cnJheVByaXZhdGVOYW1lKCksIGluaXQuY29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsgXAogICAgICAgICB9KTsKICAgICBGT1Jf
RUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoSU5JVF9UWVBFRF9BUlJB
WV9MQVRFUikKQEAgLTgzNyw3ICs4MzcsNyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAg
IEpTT2JqZWN0KiByZWdFeHBTeW1ib2xSZXBsYWNlID0gYXNPYmplY3QobV9yZWdFeHBQcm90b3R5
cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cmVwbGFjZVN5bWJvbCkuYXNDZWxs
KCkpOwogICAgIG1fcmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlLnNldCh2bSwgdGhpcywgcmVnRXhw
U3ltYm9sUmVwbGFjZSk7CiAKLSNkZWZpbmUgQ1JFQVRFX1BSSVZBVEVfR0xPQkFMX0ZVTkNUSU9O
KG5hbWUsIGNvZGUpIEpTRnVuY3Rpb24qIG5hbWUgIyMgUHJpdmF0ZUZ1bmN0aW9uID0gSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBjb2RlICMjIENvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKTsKKyNkZWZp
bmUgQ1JFQVRFX1BSSVZBVEVfR0xPQkFMX0ZVTkNUSU9OKG5hbWUsIGNvZGUpIEpTRnVuY3Rpb24q
IG5hbWUgIyMgUHJpdmF0ZUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjb2RlICMj
IENvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIHRoaXMpOwogICAgIEpTQ19GT1JFQUNIX0JVSUxU
SU5fRlVOQ1RJT05fUFJJVkFURV9HTE9CQUxfTkFNRShDUkVBVEVfUFJJVkFURV9HTE9CQUxfRlVO
Q1RJT04pCiAjdW5kZWYgQ1JFQVRFX1BSSVZBVEVfR0xPQkFMX0ZVTkNUSU9OCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCAyNTI1OTEzZGYzNzMzMWY1
N2E3YjUyNWM2ZjAxMjA4MDVhN2VmY2QyLi44YmU2M2NkZTY5ZGIyM2IxNjg5OTZlOWRhMTQyMDI1
ZWYzMDY1NWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
CkBAIC0yMDM0LDEyICsyMDM0LDE1IEBAIGJvb2wgSlNPYmplY3Q6OmdldFByaW1pdGl2ZU51bWJl
cihFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJiByZXN1CiAgICAgcmV0
dXJuICFyZXN1bHQuaXNTdHJpbmcoKTsKIH0KIAotYm9vbCBKU09iamVjdDo6Z2V0T3duU3RhdGlj
UHJvcGVydHlTbG90KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQorYm9vbCBKU09iamVjdDo6Z2V0T3duU3RhdGljUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIGZvciAoYXV0byogaW5mbyA9IGNsYXNzSW5mbyh2bSk7IGlu
Zm87IGluZm8gPSBpbmZvLT5wYXJlbnRDbGFzcykgewogICAgICAgICBpZiAoYXV0byogdGFibGUg
PSBpbmZvLT5zdGF0aWNQcm9wSGFzaFRhYmxlKSB7Ci0gICAgICAgICAgICBpZiAoZ2V0U3RhdGlj
UHJvcGVydHlTbG90RnJvbVRhYmxlKHZtLCB0YWJsZS0+Y2xhc3NGb3JUaGlzLCAqdGFibGUsIHRo
aXMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgICAgICAgICBpZiAoZ2V0U3RhdGljUHJvcGVy
dHlTbG90RnJvbVRhYmxlKGV4ZWMsIHRhYmxlLT5jbGFzc0ZvclRoaXMsICp0YWJsZSwgdGhpcywg
cHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgfQogICAg
IH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzI1LDYgKzIzMjgsNyBAQCB2b2lkIEpTT2JqZWN0
OjpyZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEFTU0VS
VCghc3RhdGljUHJvcGVydGllc1JlaWZpZWQoKSk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyBJZiB0
aGlzIG9iamVjdCdzIENsYXNzSW5mbyBoYXMgbm8gc3RhdGljIHByb3BlcnRpZXMsIHRoZW4gbm90
aGluZyB0byByZWlmeSEKICAgICAvLyBXZSBjYW4gc2FmZWx5IHNldCB0aGUgZmxhZyB0byBhdm9p
ZCB0aGUgZXhwZW5zaXZlIGNoZWNrIGFnYWluIGluIHRoZSBmdXR1cmUuCkBAIC0yMzQ1LDggKzIz
NDksMTAgQEAgdm9pZCBKU09iamVjdDo6cmVpZnlBbGxTdGF0aWNQcm9wZXJ0aWVzKEV4ZWNTdGF0
ZSogZXhlYykKICAgICAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgICAgICBh
dXRvIGtleSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCB2YWx1ZS5tX2tleSk7CiAgICAg
ICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBnZXREaXJlY3RPZmZzZXQodm0sIGtleSwg
YXR0cmlidXRlcyk7Ci0gICAgICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKLSAg
ICAgICAgICAgICAgICByZWlmeVN0YXRpY1Byb3BlcnR5KHZtLCBoYXNoVGFibGUtPmNsYXNzRm9y
VGhpcywga2V5LCB2YWx1ZSwgKnRoaXMpOworICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0
KG9mZnNldCkpIHsKKyAgICAgICAgICAgICAgICByZWlmeVN0YXRpY1Byb3BlcnR5KHZtLCBoYXNo
VGFibGUtPmNsYXNzRm9yVGhpcywga2V5LCB2YWx1ZSwgKnRoaXMsIGV4ZWMpOworICAgICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCmluZGV4IDU5MGJhMWQ5Mjk5MzQ5ZmJlMDMyOTY0ODA5NDBiODQzNGNlMWZkMTEuLmIwOGE3
ZTQ3NTJiMzY3NzllMWI2ZDhiOTdiOWVmM2JjYTlkMDcwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtOTQsNyArOTQsNyBAQCBjbGFzcyBKU09iamVjdCA6
IHB1YmxpYyBKU0NlbGwgewogICAgIGZyaWVuZCBjbGFzcyBKU0NlbGw7CiAgICAgZnJpZW5kIGNs
YXNzIEpTRmluYWxPYmplY3Q7CiAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwotICAgIEpT
X0VYUE9SVF9QUklWQVRFIGZyaWVuZCBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KFZNJiwg
Y29uc3QgSGFzaFRhYmxlVmFsdWUqLCBKU09iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgZnJpZW5kIGJvb2wgc2V0VXBTdGF0aWNGdW5j
dGlvblNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSGFzaFRhYmxlVmFsdWUqLCBKU09iamVjdCosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKICAgICBlbnVtIFB1dE1vZGUgewogICAgICAg
ICBQdXRNb2RlUHV0LApAQCAtMTAyNywxMSArMTAyNywxMSBAQCBwcml2YXRlOgogICAgIEpTX0VY
UE9SVF9QUklWQVRFIE5FVkVSX0lOTElORSBib29sIHB1dElubGluZVNsb3coRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIGJvb2wgZ2V0
Tm9uSW5kZXhQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKTsKLSAgICBib29sIGdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KFZNJiwgU3RydWN0dXJl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBib29sIGdldE93bk5vbkluZGV4
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaWxsR2V0dGVyUHJvcGVydHlT
bG90KFByb3BlcnR5U2xvdCYsIEpTQ2VsbCosIHVuc2lnbmVkLCBQcm9wZXJ0eU9mZnNldCk7CiAg
ICAgdm9pZCBmaWxsQ3VzdG9tR2V0dGVyUHJvcGVydHlTbG90KFZNJiwgUHJvcGVydHlTbG90Jiwg
Q3VzdG9tR2V0dGVyU2V0dGVyKiwgdW5zaWduZWQsIFN0cnVjdHVyZSopOwogCi0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBnZXRPd25TdGF0aWNQcm9wZXJ0eVNsb3QoVk0mLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0T3duU3Rh
dGljUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CiAgICAgc3RydWN0IFByb3BlcnR5SGFzaEVudHJ5IHsKICAgICAgICAgY29uc3QgSGFzaFRhYmxl
KiB0YWJsZTsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIHZhbHVlOwpAQCAtMTM0Mywx
NCArMTM0MywxNSBAQCBpbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0UHJvdG90eXBlKFZNJiB2
bSwgRXhlY1N0YXRlKiBleGVjKQogCiAvLyBJdCBpcyBzYWZlIHRvIGNhbGwgdGhpcyBtZXRob2Qg
d2l0aCBhIFByb3BlcnR5TmFtZSB0aGF0IGlzIGFjdHVhbGx5IGFuIGluZGV4LAogLy8gYnV0IGlm
IHNvIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZSAoZG9lc24ndCBzZWFyY2ggaW5kZXggc3RvcmFn
ZSkuCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlT
bG90KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK0FMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzKTsKICAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewogICAgICAgICBp
ZiAoIVR5cGVJbmZvOjpoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlKGlubGluZVR5cGVGbGFncygpKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIGdldE93blN0YXRpY1By
b3BlcnR5U2xvdCh2bSwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgcmV0dXJuIGdldE93
blN0YXRpY1Byb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAg
ICAKICAgICAvLyBnZXRQcm9wZXJ0eVNsb3QgcmVsaWVzIG9uIHRoaXMgbWV0aG9kIG5ldmVyIHJl
dHVybmluZyBpbmRleCBwcm9wZXJ0aWVzIQpAQCAtMTQwMCwxOSArMTQwMSwyMiBAQCBBTFdBWVNf
SU5MSU5FIHZvaWQgSlNPYmplY3Q6OmZpbGxDdXN0b21HZXR0ZXJQcm9wZXJ0eVNsb3QoVk0mIHZt
LCBQcm9wZXJ0eVNsb3QmCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IG9iamVjdC0+c3RydWN0dXJlKHZtKTsKLSAgICBpZiAob2JqZWN0
LT5nZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdCh2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpKQorICAgIGlmIChvYmplY3QtPmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KGV4ZWMs
IHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIGlmIChzdGQ6Om9wdGlv
bmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAg
cmV0dXJuIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBleGVjLCBpbmRleC52YWx1
ZSgpLCBzbG90KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIC8vIEl0IG1heSBzZWVtIGNyYXp5
IHRvIGlubGluZSBhIGZ1bmN0aW9uIHRoaXMgbGFyZ2UgYnV0IGl0IG1ha2VzIGEgYmlnIGRpZmZl
cmVuY2UKLS8vIHNpbmNlIHRoaXMgaXMgZnVuY3Rpb24gdmVyeSBob3QgaW4gdmFyaWFibGUgbG9v
a3VwCisvLyBzaW5jZSB0aGlzIGZ1bmN0aW9uIGlzIHZlcnkgaG90IGluIHZhcmlhYmxlIGxvb2t1
cAogQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgYXV0byYgc3RydWN0dXJlSURUYWJsZSA9IHZtLmhlYXAuc3RydWN0
dXJlSURUYWJsZSgpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0aGlzOwogICAgIHdoaWxlICh0
cnVlKSB7CkBAIC0xNDI5LDggKzE0MzMsOSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6
OmdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZQogICAg
ICAgICB9CiAgICAgICAgIEFTU0VSVChvYmplY3QtPnR5cGUoKSAhPSBQcm94eU9iamVjdFR5cGUp
OwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0cnVjdHVyZUlEVGFibGUuZ2V0KG9i
amVjdC0+c3RydWN0dXJlSUQoKSk7Ci0gICAgICAgIGlmIChvYmplY3QtPmdldE93bk5vbkluZGV4
UHJvcGVydHlTbG90KHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgICAg
IGlmIChvYmplY3QtPmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KGV4ZWMsIHN0cnVjdHVyZSwg
cHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlz
IGRvZXNuJ3QgbG9vayBsaWtlIGl0J3MgZm9sbG93aW5nIHRoZSBzcGVjaWZpY2F0aW9uOgogICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNTcyCiAg
ICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUob2Jq
ZWN0KTsKQEAgLTE2MzEsNyArMTYzNiw3IEBAIEpTX0VYUE9SVF9QUklWQVRFIE5FVkVSX0lOTElO
RSBib29sIG9yZGluYXJ5U2V0U2xvdyhFeGVjU3RhdGUqLCBKU09iamVjdCosIFByb3BlCiAKICNk
ZWZpbmUgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKGpzTmFtZSwgZ2Vu
ZXJhdG9yTmFtZSwgYXR0cmlidXRlcykgXAogICAgIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKFwKLSAgICAgICAgdm0sIGdsb2JhbE9iamVjdCwgbWFrZUlkZW50aWZp
ZXIodm0sIChqc05hbWUpKSwgKGdlbmVyYXRvck5hbWUpKHZtKSwgKGF0dHJpYnV0ZXMpKQorICAg
ICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBtYWtlSWRlbnRpZmllcih2bSwgKGpzTmFtZSkpLCAoZ2Vu
ZXJhdG9yTmFtZSkodm0pLnZhbHVlKCksIChhdHRyaWJ1dGVzKSkKIAogLy8gSGVscGVyIGZvciBk
ZWZpbmluZyBuYXRpdmUgZ2V0dGVycyBvbiBwcm9wZXJ0aWVzLgogI2RlZmluZSBKU0NfTkFUSVZF
X0lOVFJJTlNJQ19HRVRURVIoanNOYW1lLCBjcHBOYW1lLCBhdHRyaWJ1dGVzLCBpbnRyaW5zaWMp
ICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5o
CmluZGV4IDg5MmUyY2E0NWY5N2RkNmYzMmE2YTBlNjhhMTkyZTI2ZWU1MzE4MGIuLmI0YjU3MGVi
Y2I0MjgxOWI3M2Q2OWVlZWIwZThlYzIxZWE4NDhhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCkBAIC0xNDAsOCArMTQwLDkgQEAgQUxX
QVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXROb25JbmRleFByb3BlcnR5U2xvdChFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmEKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IHN0cnVjdHVyZUlEVGFibGUuZ2V0KG9iamVjdC0+c3RydWN0dXJlSUQo
KSk7CiAgICAgICAgIGlmIChMSUtFTFkoIVR5cGVJbmZvOjpvdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3Qob2JqZWN0LT5pbmxpbmVUeXBlRmxhZ3MoKSkpKSB7Ci0gICAgICAgICAgICBpZiAob2Jq
ZWN0LT5nZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdCh2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpKQorICAgICAgICAgICAgaWYgKG9iamVjdC0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0
eVNsb3QoZXhlYywgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZmFsc2UpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYm9vbCBoYXNTbG90ID0gc3Ry
dWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZ2V0T3duUHJvcGVydHlTbG90KG9iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAKaW5kZXggNzViMGMxMWYz
NmUyNmE3YmE0OTM0MTU4NTUyNjM4YjgxZTE1ZjFlMi4uODdmZGEzYWY4ZDkzMDM3ZWFjZDJkYTI2
ODdlYTI1MDQwNzk2NmRlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAKQEAgLTMzMCw3ICszMzAs
NyBAQCB2b2lkIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIHRvU3RyaW5nVGFnQWNjZXNzb3ItPnNl
dEdldHRlcih2bSwgZ2xvYmFsT2JqZWN0LCB0b1N0cmluZ1RhZ0Z1bmN0aW9uKTsKICAgICBwdXRE
aXJlY3ROb25JbmRleEFjY2Vzc29yKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5
bWJvbCwgdG9TdHJpbmdUYWdBY2Nlc3NvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29y
KTsKIAotICAgIEpTRnVuY3Rpb24qIHZhbHVlc0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCB0eXBlZEFycmF5UHJvdG90eXBlVmFsdWVzQ29kZUdlbmVyYXRvcih2bSksIGdsb2JhbE9i
amVjdCk7CisgICAgSlNGdW5jdGlvbiogdmFsdWVzRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHR5cGVkQXJyYXlQcm90b3R5cGVWYWx1ZXNDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgp
LCBnbG9iYWxPYmplY3QpOwogCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUoKSwgdmFsdWVz
RnVuY3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JTeW1ib2wsIHZhbHVlc0Z1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTG9va3VwLmNwcAppbmRleCA5NjZjNzFlYjEwYThhODQ4NDdlODdjYjYxMjNlNDA4NzUxNzhi
ZjA2Li4yMmRkYzFmYWM1MTZiZjRhN2E3Nzg2ZmViYTdmYjJlODkyMzVlODQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgdm9pZCBy
ZWlmeVN0YXRpY0FjY2Vzc29yKFZNJiB2bSwgY29uc3QgSGFzaFRhYmxlVmFsdWUmIHZhbHVlLCBK
U09iamVjdCYgdGhpc09iamUKICAgICBpZiAodmFsdWUuYWNjZXNzb3JHZXR0ZXIoKSkgewogICAg
ICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG51bGxwdHI7CiAgICAgICAgIGlmICh2YWx1ZS5h
dHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbikKLSAgICAgICAgICAgIGZ1
bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB2YWx1ZS5idWlsdGluQWNjZXNzb3JHZXR0
ZXJHZW5lcmF0b3IoKSh2bSksIGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICBmdW5jdGlvbiA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdmFsdWUuYnVpbHRpbkFjY2Vzc29yR2V0dGVyR2VuZXJh
dG9yKCkodm0pLnZhbHVlKCksIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgU3RyaW5nIGdldHRlck5hbWUgPSB0cnlNYWtlU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiZ2V0
ICIpLCBTdHJpbmcoKnByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpKTsKICAgICAgICAgICAgIGlm
ICghZ2V0dGVyTmFtZSkKQEAgLTQ1LDggKzQ1LDEwIEBAIHZvaWQgcmVpZnlTdGF0aWNBY2Nlc3Nv
cihWTSYgdm0sIGNvbnN0IEhhc2hUYWJsZVZhbHVlJiB2YWx1ZSwgSlNPYmplY3QmIHRoaXNPYmpl
CiAgICAgdGhpc09iamVjdC5wdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKHZtLCBwcm9wZXJ0eU5h
bWUsIGFjY2Vzc29yLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHZhbHVlLmF0dHJpYnV0ZXMoKSkp
OwogfQogCi1ib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KFZNJiB2bSwgY29uc3QgQ2xhc3NJ
bmZvKiBjbGFzc0luZm8sIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSwgSlNPYmplY3QqIHRo
aXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
K2Jvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDbGFz
c0luZm8qIGNsYXNzSW5mbywgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5LCBKU09iamVjdCog
dGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSk7
CiAgICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVp
bHRpbk9yRnVuY3Rpb25PckFjY2Vzc29yT3JMYXp5UHJvcGVydHkpOwogICAgIHVuc2lnbmVkIGF0
dHJpYnV0ZXM7CkBAIC01OSw3ICs2MSw4IEBAIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3Qo
Vk0mIHZtLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgSGFzaFRhYmxlCiAgICAg
ICAgIGlmICh0aGlzT2JqZWN0LT5zdGF0aWNQcm9wZXJ0aWVzUmVpZmllZCgpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlaWZ5U3RhdGljUHJvcGVydHkodm0sIGNsYXNz
SW5mbywgcHJvcGVydHlOYW1lLCAqZW50cnksICp0aGlzT2JqZWN0KTsKKyAgICAgICAgcmVpZnlT
dGF0aWNQcm9wZXJ0eSh2bSwgY2xhc3NJbmZvLCBwcm9wZXJ0eU5hbWUsICplbnRyeSwgKnRoaXNP
YmplY3QsIGV4ZWMpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7
CiAKICAgICAgICAgb2Zmc2V0ID0gdGhpc09iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBwcm9w
ZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwogICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAppbmRleCBiZmVlNTFlMGIx
YWNiNDQ2YTM1MDgyYjQ1YmYwMWU5MzhhNjg4YWY3Li4xYTgwYWNhOWNjOTM3ODBiMzE1NTI5MTNl
ZDZiMDgwMjcwMzQwZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApA
QCAtMzEsMTAgKzMxLDEyIEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiTGF6eVByb3BlcnR5LmgiCisjaW5jbHVkZSAiUGFy
c2VyRXJyb3IuaCIKICNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJQdXRQcm9w
ZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJUeXBlRXJyb3IuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApA
QCAtNDcsNyArNDksNyBAQCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCB7CiAvLyBpZS4gdHlwZWRl
ZiBKU1ZhbHVlICgqR2V0RnVuY3Rpb24pKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBiYXNlT2JqZWN0
KQogdHlwZWRlZiBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBHZXRGdW5jdGlvbjsKIHR5cGVk
ZWYgUHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmMgUHV0RnVuY3Rpb247Ci10eXBlZGVmIEZ1
bmN0aW9uRXhlY3V0YWJsZSogKCpCdWlsdGluR2VuZXJhdG9yKShWTSYpOwordHlwZWRlZiBFeHBl
Y3RlZDxGdW5jdGlvbkV4ZWN1dGFibGUqLCBQYXJzZXJFcnJvcj4gKCpCdWlsdGluR2VuZXJhdG9y
KShWTSYpOwogdHlwZWRlZiBKU1ZhbHVlICgqTGF6eVByb3BlcnR5Q2FsbGJhY2spKFZNJiwgSlNP
YmplY3QqKTsKIAogLy8gSGFzaCB0YWJsZSBnZW5lcmF0ZWQgYnkgdGhlIGNyZWF0ZV9oYXNoX3Rh
YmxlIHNjcmlwdC4KQEAgLTIwMyw3ICsyMDUsNyBAQCBzdHJ1Y3QgSGFzaFRhYmxlIHsKICAgICB9
CiB9OwogCi1KU19FWFBPUlRfUFJJVkFURSBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KFZN
JiwgY29uc3QgQ2xhc3NJbmZvKiwgY29uc3QgSGFzaFRhYmxlVmFsdWUqLCBKU09iamVjdCogdGhp
c09iamVjdCwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKK0pTX0VYUE9SVF9QUklWQVRF
IGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiwgY29uc3QgQ2xhc3NJbmZv
KiwgY29uc3QgSGFzaFRhYmxlVmFsdWUqLCBKU09iamVjdCogdGhpc09iamVjdCwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVpZnlTdGF0aWNB
Y2Nlc3NvcihWTSYsIGNvbnN0IEhhc2hUYWJsZVZhbHVlJiwgSlNPYmplY3QmIHRoaXNPYmplY3Qs
IFByb3BlcnR5TmFtZSk7CiAKIGlubGluZSBCdWlsdGluR2VuZXJhdG9yIEhhc2hUYWJsZVZhbHVl
OjpidWlsdGluQWNjZXNzb3JHZXR0ZXJHZW5lcmF0b3IoKSBjb25zdApAQCAtMjIwLDcgKzIyMiw3
IEBAIGlubGluZSBCdWlsdGluR2VuZXJhdG9yIEhhc2hUYWJsZVZhbHVlOjpidWlsdGluQWNjZXNz
b3JTZXR0ZXJHZW5lcmF0b3IoKSBjb25zdAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEJ1
aWx0aW5HZW5lcmF0b3I+KG1fdmFsdWVzLnZhbHVlMik7CiB9CiAKLWlubGluZSBib29sIGdldFN0
YXRpY1Byb3BlcnR5U2xvdEZyb21UYWJsZShWTSYgdm0sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvLCBjb25zdCBIYXNoVGFibGUmIHRhYmxlLCBKU09iamVjdCogdGhpc09iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoraW5saW5lIGJvb2wgZ2V0
U3RhdGljUHJvcGVydHlTbG90RnJvbVRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQ2xhc3NJ
bmZvKiBjbGFzc0luZm8sIGNvbnN0IEhhc2hUYWJsZSYgdGFibGUsIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgaWYgKHRoaXNPYmplY3QtPnN0YXRpY1Byb3BlcnRpZXNSZWlmaWVkKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTIzMCw3ICsyMzIsNyBAQCBpbmxpbmUgYm9vbCBnZXRTdGF0aWNQcm9w
ZXJ0eVNsb3RGcm9tVGFibGUoVk0mIHZtLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgYwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIFBy
b3BlcnR5QXR0cmlidXRlOjpCdWlsdGluT3JGdW5jdGlvbk9yQWNjZXNzb3JPckxhenlQcm9wZXJ0
eSkKLSAgICAgICAgcmV0dXJuIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KHZtLCBjbGFzc0luZm8s
IGVudHJ5LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICByZXR1cm4g
c2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZXhlYywgY2xhc3NJbmZvLCBlbnRyeSwgdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIAogICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYg
UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlcikgewogICAgICAgICBzbG90LnNldFZh
bHVlKHRoaXNPYmplY3QsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoZW50cnktPmF0dHJpYnV0ZXMo
KSksIGpzTnVtYmVyKGVudHJ5LT5jb25zdGFudEludGVnZXIoKSkpOwpAQCAtMzE5LDEzICszMjEs
MTkgQEAgaW5saW5lIGJvb2wgbG9va3VwUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGJhc2UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW5s
aW5lIHZvaWQgcmVpZnlTdGF0aWNQcm9wZXJ0eShWTSYgdm0sIGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvLCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgY29uc3QgSGFzaFRhYmxl
VmFsdWUmIHZhbHVlLCBKU09iamVjdCYgdGhpc09iaikKK2lubGluZSB2b2lkIHJlaWZ5U3RhdGlj
UHJvcGVydHkoVk0mIHZtLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgUHJvcGVy
dHlOYW1lJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IEhhc2hUYWJsZVZhbHVlJiB2YWx1ZSwgSlNPYmpl
Y3QmIHRoaXNPYmosIEV4ZWNTdGF0ZSogZXhlYyA9IG51bGxwdHIpCiB7CisgICAgQVNTRVJUKCZ2
bSA9PSAmKGV4ZWMtPnZtKCkpKTsKICAgICBpZiAodmFsdWUuYXR0cmlidXRlcygpICYgUHJvcGVy
dHlBdHRyaWJ1dGU6OkJ1aWx0aW4pIHsKICAgICAgICAgaWYgKHZhbHVlLmF0dHJpYnV0ZXMoKSAm
IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvcikKICAgICAgICAgICAgIHJlaWZ5U3RhdGljQWNj
ZXNzb3Iodm0sIHZhbHVlLCB0aGlzT2JqLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICB0aGlzT2JqLnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2bSwgdGhpc09iai5n
bG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCB2YWx1ZS5idWlsdGluR2VuZXJhdG9yKCkodm0p
LCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHZhbHVlLmF0dHJpYnV0ZXMoKSkpOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIEV4cGVjdGVkPEZ1bmN0aW9uRXhlY3V0YWJsZSosIFBhcnNlckVy
cm9yPiBmID0gdmFsdWUuYnVpbHRpbkdlbmVyYXRvcigpKHZtKTsKKyAgICAgICAgICAgIGlmIChm
Lmhhc192YWx1ZSgpKQorICAgICAgICAgICAgICAgIHRoaXNPYmoucHV0RGlyZWN0QnVpbHRpbkZ1
bmN0aW9uKHZtLCB0aGlzT2JqLmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGYudmFsdWUo
KSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1dGVzKCkpKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmLmVycm9yKCkudGhyb3dTdGFja092ZXJmbG93T3JP
dXRPZk1lbW9yeShleGVjKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAppbmRleCA1
MzU2OGI3YTNhYWU0YjEyNmNjZTMzOWQzMmQwNDcwZWVhNzZhMTgzLi5mZTJiNmJlZTEzMjBjYjI1
NTdhN2RlNTMyZmZkOTgwNGRiMzI1ZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hcFByb3RvdHlwZS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBNYXBQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
ICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0UHJpdmF0ZU5hbWUoKSwgbWFwUHJvdG9G
dW5jR2V0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgMSwgSlNNYXBHZXRJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNU
SU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5z
ZXRQcml2YXRlTmFtZSgpLCBtYXBQcm90b0Z1bmNTZXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyLCBKU01hcFNldEludHJpbnNpYyk7CiAKLSAg
ICBKU0Z1bmN0aW9uKiBlbnRyaWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBtYXBQcm90b3R5
cGVFbnRyaWVzQ29kZUdlbmVyYXRvcih2bSksIGdsb2JhbE9iamVjdCk7CisgICAgSlNGdW5jdGlv
biogZW50cmllcyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgbWFwUHJvdG90eXBlRW50cmllc0Nv
ZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIGdsb2JhbE9iamVjdCk7CiAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJp
ZXNQdWJsaWNOYW1lKCksIGVudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGVudHJpZXMsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpz
U3RyaW5nKCZ2bSwgIk1hcCIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NldFByb3RvdHlwZS5jcHAKaW5kZXggMjkzNDM5NjA4N2U2OGJmMzhjOTE4NzMxODA0ZjZmNmU3
MGIwN2Q2Yy4uZjJmMDVlM2ZmMGZlNGMzYWI5ZjJjYjZiZTA1MjlhNDQwYzJmZDg0MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCkBAIC02OCw3
ICs2OCw3IEBAIHZvaWQgU2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJ
T05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmhh
c1ByaXZhdGVOYW1lKCksIHNldFByb3RvRnVuY0hhcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEsIEpTU2V0SGFzSW50cmluc2ljKTsKICAgICBK
U0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYWRkUHJpdmF0ZU5hbWUoKSwgc2V0UHJvdG9GdW5jQWRk
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwg
SlNTZXRBZGRJbnRyaW5zaWMpOwogCi0gICAgSlNGdW5jdGlvbiogdmFsdWVzID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBzZXRQcm90b3R5cGVWYWx1ZXNDb2RlR2VuZXJhdG9yKHZtKSwgZ2xvYmFs
T2JqZWN0KTsKKyAgICBKU0Z1bmN0aW9uKiB2YWx1ZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IHNldFByb3RvdHlwZVZhbHVlc0NvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIGdsb2JhbE9iamVj
dCk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUoKSwgdmFsdWVzLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQ
dWJsaWNOYW1lKCksIHZhbHVlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgdmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggNzdmNjAzOTVjZjZhOTQyNmMxNjYwYmUwZWI4MDFl
ZjY2Y2FjNzRiZS4uNzM2NDU5MGY2NWYyMzJjNGExYzQ4MzdiNzg3NDk4OGZmMGM5YmJmZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjYsNyArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTRG9sbGFyVk0uaCIKIAotI2lu
Y2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5oIgorI2luY2x1ZGUgIkJ1aWx0aW5FeGVj
dXRhYmxlcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRPTUF0dHJpYnV0
ZUdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRPTUpJVEdldHRlclNldHRlci5oIgpAQCAtMTUy
Miw3ICsxNTIyLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DcmVhdGVCdWlsdGluKEV4ZWNTdGF0ZSogZXhlYykKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSA9IG1ha2VTb3VyY2UoZnVuY3Rpb25UZXh0LCB7IH0pOwotICAgIEpTRnVuY3Rpb24qIGZ1bmMg
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKHZtLCBzb3Vy
Y2UsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiZm9vIiksIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0KS0+bGluayh2bSwgc291cmNl
KSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFi
bGUodm0sIHNvdXJjZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJmb28iKSwgQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpLnZhbHVl
KCktPmxpbmsodm0sIHNvdXJjZSksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CiAKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZ1bmMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjBiMGY3MmJmY2U0ZTNhMjlmODUxYTBlOTdhYTkzYWY3
NDkxMjQ3YS4uNzQ2YzVhNDk2N2Y0YjhmNDI5YmM3MWU3NGZkNzA3YjMxYjM1MDY0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjgsNiArMjY4LDcgQEAK
IAkJMEZGQkNCRkExRkQzN0UwRjAwNzJBQUYwIC8qIENvdW50aW5nTG9jay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb3VudGluZ0xvY2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZGRjE5REExQkIzMzRFQjAwODg2RDkxIC8qIFBhcmFsbGVsSGVscGVyUG9v
bC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJhbGxlbEhlbHBl
clBvb2wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZGMTlEQjFCQjMzNEVC
MDA4ODZEOTEgLyogUGFyYWxsZWxIZWxwZXJQb29sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBhcmFsbGVsSGVscGVyUG9vbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxMzI3NDM5MjRGQzU0RTQ2OUY1QThFNkUgLyogU3RkVW5vcmRlcmVkU2V0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0ZFVub3JkZXJlZFNldC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxNDAyMkY0MDE4RjVDM0ZDMDA3RkYwRUIgLyogbGliYm1hbGxv
Yy5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXJj
aGl2ZS5hcjsgcGF0aCA9IGxpYmJtYWxsb2MuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKIAkJMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUkFNU2l6ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTE0M0Y2MTFFMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJBTVNpemUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTMyNyw3ICszMjgsOSBAQAogCQkyQ0RFRDBGMjE4MTE1Qzg1MDA0
REJBNzAgLyogUnVuTG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSdW5M
b29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMzdFMUQ3REJEODRBQzM4RkFF
NEQzNCAvKiBJbmRleFNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRl
eFNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTNFREVDOTc3OEU0OUM5QkVB
OTFDRkMgLyogU3RhY2tUcmFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdGFja1RyYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzM0RURB
MzYyMDZBNDdGRjAwM0Y2REZCIC8qIFVuZXhwZWN0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVW5leHBlY3RlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
N0M3Q0MyOTFFQTQwQTczMDA3QkQ5NTYgLyogV2Vha0xpbmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2Vha0xpbmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzkxQkQ2QkE0RDE2NEZEMjk0RjlBOTNEIC8qIFN0ZE1hcC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdGRNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDEzRkU4RjUxRjhEMkVBQjAwRjZEN0Q3IC8qIENhbGxiYWNrQWdncmVnYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsYmFja0FnZ3JlZ2F0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDMwQjQ3ODcxQUFBQUMxQTAwMTIyM0RBIC8qIFN0cmlu
Z0NvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdDb21tb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCQTlFQUIxRjRDRDYxRTAwOUEyQkJD
IC8qIENvbXBsZXRpb25IYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvbXBsZXRpb25IYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNTcs
NiArMzYwLDcgQEAKIAkJNTM1MzRGMjkxRUMwRTEwRTAwMTQxQjJGIC8qIE1hY2hFeGNlcHRpb25z
LmRlZnMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLm1pZzsgcGF0aCA9IE1hY2hFeGNlcHRpb25zLmRl
ZnM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzOUVCMDYyMUQ1NTI4NDIwMEM4MkVG
NyAvKiBMRUJEZWNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExFQkRl
Y29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNFQzI1M0MxRTk1QUQzMDAw
MDgzMUI5IC8qIFByaW9yaXR5UXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUHJpb3JpdHlRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1M0YwOEEx
QkEzOUQ0OUE4QkFEMzY5QTEgLyogU3RkU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0ZFNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0YxRDk4NjIw
NDc3Qjk4MDBFQkM2QkYgLyogRnVuY3Rpb25UcmFpdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IEZ1bmN0
aW9uVHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1MzA3MUM5MUM0MDQy
NzIwMDM4NDg5OCAvKiBUaW55TFJVQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGlueUxSVUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1OTdG
ODJDMUQ5NEI5OTcwMDY2QkMyMSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bmNocm9uaXplZEZpeGVkUXVldWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM3Myw2ICszNzcsNyBAQAogCQk3MEVDQTYwQjFCMDI0
MjY4MDA0NDk3MzkgLyogU3ltYm9sSW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTeW1ib2xJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwRUNBNjBD
MUIwMjQyNjgwMDQ0OTczOSAvKiBVbmlxdWVkU3RyaW5nSW1wbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBVbmlxdWVkU3RyaW5nSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3OTM2RDZBOTFDOTlGOEFFMDAwRDFBRUQgLyogU21hbGxQdHJTZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU21hbGxQdHJTZXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNzkzQkZBREQ5Q0VENDRCOEI5RkJDQTE2IC8qIFN0ZFVub3JkZXJl
ZE1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGRVbm9yZGVyZWRNYXAu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzk1MjEyMDIxRjQyNTg4ODAwQkQ2NDIx
IC8qIFNpbmdsZVJvb3RHcmFwaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aW5nbGVSb290R3JhcGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0EwNTA5M0Qx
RkI5RENDNTAwQjMzRkI4IC8qIEpTT05WYWx1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNPTlZhbHVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTA1
MDkzRTFGQjlEQ0M1MDBCMzNGQjggLyogSlNPTlZhbHVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU09OVmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTUzNSwxMSArNTQwLDYgQEAKIAkJQThBNDczMEUxNTFBODI1QjAwNDEyM0ZGIC8q
IFN0YWNrQm91bmRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
YWNrQm91bmRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczMEYxNTFB
ODI1QjAwNDEyM0ZGIC8qIFN0YWNrQm91bmRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0YWNrQm91bmRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3
MzExMTUxQTgyNUIwMDQxMjNGRiAvKiBTdGRMaWJFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3RkTGliRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUZGMEE0MzY1ODg5NTRGM0NCMDdEQkVDQSAvKiBTdGRMaXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0ZExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMzkxQkQ2QkE0RDE2NEZEMjk0RjlBOTNEIC8qIFN0ZE1hcC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdGRNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NTNGMDhBMUJBMzlENDlBOEJBRDM2OUExIC8qIFN0ZFNldC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdGRTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzkz
QkZBREQ5Q0VENDRCOEI5RkJDQTE2IC8qIFN0ZFVub3JkZXJlZE1hcC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdGRVbm9yZGVyZWRNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMTMyNzQzOTI0RkM1NEU0NjlGNUE4RTZFIC8qIFN0ZFVub3JkZXJlZFNldC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGRVbm9yZGVyZWRTZXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczMTMxNTFBODI1QjAwNDEyM0ZGIC8qIFN0
cmluZ0V4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdFeHRy
YXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczMTQxNTFBODI1QjAwNDEy
M0ZGIC8qIEhhc2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYXNoZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczMUExNTFBODI1QjAwNDEyM0ZG
IC8qIFNldEZvclNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNldEZv
clNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MzksNiArNjM5LDcgQEAK
IAkJRkVCNkIwMzUyMDFCRTBCNjAwQjk1OEMxIC8qIFBvaW50ZXJQcmVwYXJhdGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9pbnRlclByZXBhcmF0aW9ucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRURBQ0QzQjE2MzBGODNGMDBDNjk2MzQgLyogU3Rh
Y2tTdGF0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGFja1N0
YXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQUNEM0MxNjMwRjgzRjAw
QzY5NjM0IC8qIFN0YWNrU3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3RhY2tTdGF0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRjBBNDM2NTg4OTU0
RjNDQjA3REJFQ0EgLyogU3RkTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdGRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJl
ZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNl
Y3Rpb24gKi8KQEAgLTEwOTgsNiArMTA5OSw3IEBACiAJCQkJMEZFRDY3QjUxQjIyRDREODAwNjZD
RTE1IC8qIFRpbnlQdHJTZXQuaCAqLywKIAkJCQkxNDlFRjE2MjE2QkJGRTBEMDAwQTQzMzEgLyog
VHJpU3RhdGUuaCAqLywKIAkJCQk4M0ZCQTkzMTE5REY0NTk3MDBGMzBBREIgLyogVHlwZUNhc3Rz
LmggKi8sCisJCQkJMzM0RURBMzYyMDZBNDdGRjAwM0Y2REZCIC8qIFVuZXhwZWN0ZWQuaCAqLywK
IAkJCQlBOEE0NzM1QzE1MUE4MjVCMDA0MTIzRkYgLyogVW5pb25GaW5kLmggKi8sCiAJCQkJRTMw
MEU1MjEyMDNENjQ1RjAwREE3OUJFIC8qIFVuaXF1ZUFycmF5LmggKi8sCiAJCQkJNUM3Qzg4RDMx
RDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1ZVJlZi5oICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336770</attachid>
            <date>2018-03-29 07:49:56 -0700</date>
            <delta_ts>2018-03-29 08:03:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184074-20180329164954.patch</filename>
            <type>text/plain</type>
            <size>76829</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
OGEwYzhmOGE5MjVlZjVlYmY4YWIxNDUzMTU1Zjc3MmZjNzJmMzVkLi5iMDk2ZmQ5YmU3ZDE0Nzc4
NTY5YmQ2OTQ4MjMxZDcwODM5ZjQwMmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NCBAQAorMjAxOC0wMy0yOSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUu
Y29tPgorCisgICAgICAgIEEgc3RhY2sgb3ZlcmZsb3cgaW4gdGhlIHBhcnNpbmcgb2YgYSBidWls
dGluIChjYWxsZWQgYnkgY3JlYXRlRXhlY3V0YWJsZSkgY2F1c2UgYSBjcmFzaCBpbnN0ZWFkIG9m
IGEgY2F0Y2hhYmxlIGpzIGV4Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MDc0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNzE2NTg5
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhp
bmcgdGhpcyByZXF1aXJlcyBnZXR0aW5nIHRoZSBQYXJzZXJFcnJvciAod2l0aCBpbmZvcm1hdGlv
biBhYm91dCB0aGUgZmFpbHVyZSkgYW5kIGFuIEV4ZWNTdGF0ZSogKHRvIHRocm93IGFuIGV4Y2Vw
dGlvbikgaW4gdGhlIHNhbWUgcGxhY2UuCisgICAgICAgIEl0IGlzIHN1cnByaXNpbmdseSBwYWlu
ZnVsLCB3aXRoIHF1aXRlIGEgbG9uZyBjYWxsIHN0YWNrIGJldHdlZW4gdGhlIGxhc3QgZnVuY3Rp
b24gd2l0aCBhbiBhY2Nlc3MgdG8gYW4gRXhlY1N0YXRlKiBhbmQgdGhlIGZpcnN0IGZ1bmN0aW9u
IHdpdGggdGhlIFBhcnNlckVycm9yLgorICAgICAgICBFdmVuIHdvcnNlLCBtYW55IG9mIHRoZXNl
IGZ1bmN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IG1hY3JvcywgdGhlbXNlbHZlcyBnZW5lcmF0ZWQg
YnkgYSBtYXplIG9mIHB5dGhvbiBzY3JpcHRzLgorICAgICAgICBBcyBhIHJlc3VsdCwgdGhpcyBw
YXRjaCBpcyBncm90ZXNxdWVseSBsYXJnZSwgd2hpbGUgYWxsIGl0IGRvZXMgaXMgYWRkaW5nIGVu
b3VnaCBwbHVtYmluZyB0byB0aHJvdyBhIHByb3BlciBleGNlcHRpb24gaW4gdGhpcyBzcGVjaWZp
YyBjYXNlLgorCisgICAgICAgIFRoZXJlIGFyZSBub3cgYmFyZSBjYWxscyB0byAnLnZhbHVlKCkn
IG9uIHNldmVyYWwgcGF0aHMgdGhhdCBtYXkgY3Jhc2guIEl0IGlzIG5vdCBhIHByb2JsZW0gaW4g
bXkgb3Bpbmlvbiwgc2luY2Ugd2UgcHJldmlvdXNseSBjcmFzaGVkIGluIGV2ZXJ5IGNhc2UgcmVn
YXJkbGVzcyBvZiB0aGUgcGF0aCB0aGF0IHRvb2sgdXMgdG8gY3JlYXRlRXhlY3V0YWJsZSB3aGVu
IGVuY291bnRlcmluZyBhIHN0YWNrIG92ZXJmbG93LgorICAgICAgICBJZiB3ZSBldmVyIGZpbmQg
YW4gZXhhbXBsZSB0aGF0IGNhbiBjYXVzZSB0aGVzZSBjYWxscyB0byBmYWlsLCBpdCBzaG91bGQg
YmUgZG9hYmxlIHRvIHRocm93IGEgcHJvcGVyIGV4Y2VwdGlvbiB0aGVyZSB0b28uCisKKyAgICAg
ICAgVHdvIG90aGVyIG1pbm9yIGNoYW5nZXM6CisgICAgICAgIC0gSSByZW1vdmVkIEJ1aWx0aW5F
eGVjdXRhYmxlQ3JlYXRvci57Y3BwLCBofSBhcyBpdCB3YXMgbmVhcmx5IGVtcHR5LCBhbmQgb25s
eSB1c2VkIGluIG9uZSBwbGFjZS4gVGhhdCBwbGFjZSBub3cgaW5jbHVkZXMgQnVpbHRpbkV4ZWN1
dGFibGVzLmggZGlyZWN0bHkgaW5zdGVhZC4KKyAgICAgICAgLSBJIG1vdmVkIGNvZGUgZnJvbSBQ
YXJzZXJFcnJvci5oIGludG8gYSBuZXdseSBjcmVhdGVkIFBhcnNlckVycm9yLmNwcCwgYXMgSSBz
ZWUgbm8gbmVlZCB0byBpbmxpbmUgZnVuY3Rpb25zIHRoYXQgYXJlIG9ubHkgdXNlZCB3aGVuIGVu
Y291bnRlcmluZyBhIHBhcnNlciBlcnJvciwgYW5kIFBhcnNlckVycm9yLmggaXMgbm93IGluY2x1
ZGVkIGluIHF1aXRlIGEgZmV3IHBsYWNlcy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWls
dGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHk6CisgICAgICAgIChCdWlsdGluc0NvbWJp
bmVkSGVhZGVyR2VuZXJhdG9yLmdlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKToKKyAgICAg
ICAgKFBhcnNlckVycm9yKToKKyAgICAgICAgKGdlbmVyYXRlX3NlY3Rpb25fZm9yX29iamVjdCk6
IERlbGV0ZWQuCisgICAgICAgIChnZW5lcmF0ZV9leHRlcm5zX2Zvcl9vYmplY3QpOiBEZWxldGVk
LgorICAgICAgICAoZ2VuZXJhdGVfbWFjcm9zX2Zvcl9vYmplY3QpOiBEZWxldGVkLgorICAgICAg
ICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV90YWJsZV9tYWNybyk6IERlbGV0ZWQuCisgICAg
ICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX25hbWVfbWFjcm8pOiBEZWxldGVkLgorICAg
ICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3JfZ2xvYmFsX3ByaXZhdGVfY29kZV9uYW1lX21hY3Jv
KTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRl
X3NlcGFyYXRlX2hlYWRlci5weToKKyAgICAgICAgKGdlbmVyYXRlX3NlY29uZGFyeV9oZWFkZXJf
aW5jbHVkZXMpOgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVz
LnB5OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlQ3JlYXRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVDcmVhdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVh
dGVEZWZhdWx0Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6
OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlQnVpbHRpbkV4
ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1
dGFibGVPckNyYXNoKToKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVF
eGVjdXRhYmxlKToKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaDoKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyRXJyb3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UGFyc2VyRXJyb3I6OnRv
RXJyb3JPYmplY3QpOgorICAgICAgICAoSlNDOjpQYXJzZXJFcnJvcjo6dGhyb3dTdGFja092ZXJm
bG93T3JPdXRPZk1lbW9yeSk6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAg
ICAqIHBhcnNlci9QYXJzZXJFcnJvci5oOgorICAgICAgICAoSlNDOjpQYXJzZXJFcnJvcjo6dG9F
cnJvck9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OkFzeW5jSXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25Qcm90b3R5cGU6OmFkZEZ1bmN0aW9uUHJvcGVydGllcyk6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmdldE93blN0YXRpY1Byb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpyZWlm
eUFsbFN0YXRpY1Byb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXROb25JbmRleFByb3BlcnR5U2xvdCk6
CisgICAgICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvTG9va3VwLmNwcDoKKyAgICAgICAgKEpTQzo6cmVpZnlTdGF0aWNBY2Nl
c3Nvcik6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGljRnVuY3Rpb25TbG90KToKKyAgICAgICAg
KiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNQcm9wZXJ0eVNsb3RG
cm9tVGFibGUpOgorICAgICAgICAoSlNDOjpyZWlmeVN0YXRpY1Byb3BlcnR5KToKKyAgICAgICAg
KiBydW50aW1lL01hcFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcFByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6U2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogdG9v
bHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlQnVpbHRpbik6
CisKIDIwMTgtMDMtMjkgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzAwNjIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWVlMDAyN2MwNmQ0MzkzODI4MDA2ZmUzNjk3YjgwYjc3MDEwY2Q0OC4uOWQwMGE2NjQyOTNmZjFh
OTcyOGQyYjBlZmIxZDVjZDM0YzBiN2RlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisy
MDE4LTAzLTI5ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAg
ICAgQSBzdGFjayBvdmVyZmxvdyBpbiB0aGUgcGFyc2luZyBvZiBhIGJ1aWx0aW4gKGNhbGxlZCBi
eSBjcmVhdGVFeGVjdXRhYmxlKSBjYXVzZSBhIGNyYXNoIGluc3RlYWQgb2YgYSBjYXRjaGFibGUg
anMgZXhjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODQwNzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM3MTY1ODk3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkgaGFkIHRvIHNsaWdodGx5
IGNoYW5nZSB0aGUgdHlwZSBvZiBzb21lIGJpbmRpbmdzIGJldHdlZW4gSlNDIGFuZCBXZWJDb3Jl
LiBObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCBvbiB0aGUgV2ViQ29yZSBzaWRlLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNCdWlsdGluUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVh
ZGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyUHJpdmF0ZUNv
bnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0J1
aWx0aW5SZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0
aWFsaXplRXhlY3V0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0J1aWx0aW5SZWFkYWJsZVN0
cmVhbUJZT0JSZWFkZXJQcml2YXRlQ29uc3RydWN0b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQnVpbHRpblJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3RQcml2
YXRlQ29uc3RydWN0b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0
b3JIZWxwZXJNZXRob2RzKToKKwogMjAxOC0wMy0yOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1
ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzMDA2
Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzU0OGJhYzIzN2YwMjg4NTkxMDUz
MWUyOGYwYzRkN2M5OWNiN2E4NS4uOTk0ODU3NGRhNWViNmQxZDM2ODI4OWJkM2I5ZGM2ZDY2ZDgy
NmYzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2NzUsNyArMTY3NSw2IEBA
CiAJCURDRjNENTZEMUNEMjk0NzYwMDNENUM2NSAvKiBMYXp5UHJvcGVydHlJbmxpbmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQ0YzRDU2ODFDRDI5
NDY4MDAzRDVDNjUgLyogTGF6eVByb3BlcnR5SW5saW5lcy5oICovOyB9OwogCQlEQ0ZERkJEOTFE
MUY1RDlCMDBGRTNENzIgLyogQjNCb3R0b21Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRENGREZCRDcxRDFGNUQ5ODAwRkUzRDcyIC8qIEIz
Qm90dG9tUHJvdmlkZXIuaCAqLzsgfTsKIAkJRENGREZCREExRDFGNUQ5RTAwRkUzRDcyIC8qIEIz
VHlwZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RENGREZCRDgxRDFGNUQ5ODAwRkUzRDcyIC8qIEIzVHlwZU1hcC5oICovOyB9OwotCQlERTI2RTkw
MzFDQjVERDA1MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTI2RTkwMjFDQjVERDA1MDBE
MkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmggKi87IH07CiAJCURFQTdFMjQ1MUJC
QzY3N0YwMEQ3ODQ0MCAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzkxN0U3QzFCNzkxMTA2MDAwRUJE
MzMgLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxMjRBOEY3MEU1NTU3NzUwMDMwOTFGMSAvKiBP
cGFxdWVKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMxNjE4MTMxRUM1
RkUxNzAwMDZBMjE4IC8qIERPTUFubm90YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMTYxODEwMUVDNUZFMDgwMDA2QTIxOCAvKiBET01Bbm5v
dGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTMxNjIsNiArMzE2MSw3IEBACiAJCTFDQUE4QjRBMEQzMkMzOUEwMDQxQkNGRiAvKiBKYXZh
U2NyaXB0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEphdmFTY3JpcHQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBQThCNEIwRDMyQzM5QTAwNDFCQ0ZGIC8q
IEphdmFTY3JpcHRDb3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEphdmFT
Y3JpcHRDb3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIwRUNCMTVFRkM1MjQ2
MjRCQzJGMDJENSAvKiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyMjBDNjBDNjIwNkNFQUJEMDBGQzQ2MzcgLyog
UGFyc2VyRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFyc2VyRXJyb3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjAwQjVBNDE1MkJBQUE3MDA5MUVFNUYgLyogSlNT
dHJpbmdKb2luZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNT
dHJpbmdKb2luZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjAwQjVBNTE1
MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNTdHJpbmdKb2luZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMjYyRDg1QjQxQzBENjUwRjAwNkFDQjYxIC8qIEFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxs
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJGaXhQYXJ0aWFs
UmVnaXN0ZXJTdGFsbHMuY3BwOyBwYXRoID0gYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0
YWxscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTEzLDggKzQ1MTMsNiBA
QAogCQlEQ0YzRDU2ODFDRDI5NDY4MDAzRDVDNjUgLyogTGF6eVByb3BlcnR5SW5saW5lcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXp5UHJvcGVydHlJbmxpbmVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDRkRGQkQ3MUQxRjVEOTgwMEZFM0Q3MiAvKiBC
M0JvdHRvbVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQm90
dG9tUHJvdmlkZXIuaDsgcGF0aCA9IGIzL0IzQm90dG9tUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRENGREZCRDgxRDFGNUQ5ODAwRkUzRDcyIC8qIEIzVHlwZU1hcC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1R5cGVNYXAuaDsgcGF0aCA9IGIz
L0IzVHlwZU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlERTI2RTkwMjFDQjVE
RDA1MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlERTI2RTkwNjFDQjVERDk2MDBEMkJFODIgLyogQnVpbHRpbkV4
ZWN1dGFibGVDcmVhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCURFNUEwOUZGMUJBM0FDM0UwMDNENDQyNCAvKiBJbnRyaW5zaWNFbWl0dGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludHJpbnNpY0VtaXR0ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTI0QThGNTBFNTU1Nzc1MDAzMDkxRjEgLyog
T3BhcXVlSlNTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3BhcXVl
SlNTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyNEE4RjYwRTU1NTc3
NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE9wYXF1ZUpTU3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTYzNjQsNiArNjM2Miw3IEBACiAJCQkJOTNGMEIzQUEwOUJCNERDMDAwNjhGQ0UzIC8q
IFBhcnNlci5oICovLAogCQkJCTkzMDUyQzMyMEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVu
YS5jcHAgKi8sCiAJCQkJOTMwNTJDMzMwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNlckFyZW5hLmgg
Ki8sCisJCQkJMjIwQzYwQzYyMDZDRUFCRDAwRkM0NjM3IC8qIFBhcnNlckVycm9yLmNwcCAqLywK
IAkJCQkwRkNDQUU0MzE2RDBDRjZFMDBEMEM2NUIgLyogUGFyc2VyRXJyb3IuaCAqLywKIAkJCQk5
QjQ5NTRFODFBNjY0MERCMDAyODE1QTYgLyogUGFyc2VyRnVuY3Rpb25JbmZvLmggKi8sCiAJCQkJ
QTc3RjE4MjQxNjQxOTI1NDAwNjQwQTQ3IC8qIFBhcnNlck1vZGVzLmggKi8sCkBAIC03OTE4LDgg
Kzc5MTcsNiBAQAogCQkJCTVCODI0MzA0MURCN0FBNDkwMEVBNjM4NCAvKiBBc3luY0Z1bmN0aW9u
UHJvdG90eXBlLmpzICovLAogCQkJCThCQzA2NDgyMUUxODBCNEEwMEIyQjhDQSAvKiBBc3luY0dl
bmVyYXRvclByb3RvdHlwZS5qcyAqLywKIAkJCQk4QkMwNjQ5NTFFMUQ4MzhCMDBCMkI4Q0EgLyog
QXN5bmNJdGVyYXRvclByb3RvdHlwZS5qcyAqLywKLQkJCQlERTI2RTkwNjFDQjVERDk2MDBEMkJF
ODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmNwcCAqLywKLQkJCQlERTI2RTkwMjFDQjVE
RDA1MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmggKi8sCiAJCQkJQTdEODAx
QTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi8sCiAJCQkJQTdE
ODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovLAogCQkJCUUz
ODBENjZCMUYxOTI0OUQwMEE1OTA5NSAvKiBCdWlsdGluTmFtZXMuY3BwICovLApAQCAtODM1MSw3
ICs4MzQ4LDYgQEAKIAkJCQk5QjQ2OTQzOTFGOTc0MzlFMDBDQ0IzRjkgLyogQm9vbGVhblByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk2QjczMTkxQkRBMDY4MDAwMzMxQjg0IC8qIEJv
b2xlYW5Qcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUEwODYyMDE4MkI3QTA0
MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJREUyNkU5MDMxQ0I1
REQwNTAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTc1RUU5QjIxOEFBQjdFMjAwQUFEMDQzIC8qIEJ1aWx0aW5OYW1l
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlEQTAwQTYxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0
aW5zLnB5IGluIEhlYWRlcnMgKi8sCkBAIC05MDQ0LDcgKzkwNDAsNiBAQAogCQkJCUE1MDNGQTFF
MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTcwMTNDQThDMUI0OTFBOTQwMENBRTYxMyAvKiBKU0pvYi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMxOEM0MTYwRTE2RjVDRDAwQjM0NDYwIC8qIEpTTGV4aWNhbEVudmly
b25tZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk3QTk3NzRBODIwNkI4MkU0MDA4RDAzRDAgLyog
SlNXZWFrVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDIzMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBKU0xvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUMyNUQ3MDlDMTZERTk5RjQwMEZDQTZC
QyAvKiBKU01hbmFnZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkE0QkI3RjMxOEE0MTE3
OTAwOEEwRkNEIC8qIEpTTWFuYWdlZFZhbHVlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAt
OTExNiw2ICs5MTExLDcgQEAKIAkJCQlBNzQ4MkI5MzExNjcxMTQ3MDAzQjA3MTIgLyogSlNXZWFr
T2JqZWN0TWFwUmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjI4NkIxRUI4RTZD
RjAwMEVCNUQyIC8qIEpTV2Vha1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwOUZCODY4
MUFFMzM1QzYwMDM5RDA2OSAvKiBKU1dlYWtTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTdBOTc3
NEE4MjA2QjgyRTQwMDhEMDNEMCAvKiBKU1dlYWtWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QUQ1QzM2RUIxRjc1QUQ3MzAwMEJDQUFGIC8qIEpTV2ViQXNzZW1ibHkuaCBpbiBIZWFkZXJzICov
LAogCQkJCUFEOUU4NTJGMUU4QTBDN0MwMDhERTM5RSAvKiBKU1dlYkFzc2VtYmx5Q29kZUJsb2Nr
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3OUVGRDQ4NDFFQkMwNDVDMDBGM0RGRUEgLyogSlNXZWJB
c3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0
ZV9jb21iaW5lZF9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWls
dGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkKaW5kZXggY2RlMzU3Y2Q0
MzljZWFmNDQ2NDI4ZTY4MTg4NDc4MDczYzAzYzQ5ZC4uNzIxNGNkYWE1OTQzYjhiY2NhYzMzZTJj
MDdmOWZmM2VjMTI3N2Q5NCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaGVhZGVyLnB5CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2Nv
bWJpbmVkX2hlYWRlci5weQpAQCAtNjYsMTIgKzY2LDE3IEBAIGNsYXNzIEJ1aWx0aW5zQ29tYmlu
ZWRIZWFkZXJHZW5lcmF0b3IoQnVpbHRpbnNHZW5lcmF0b3IpOgogICAgICAgICByZXR1cm4gIlxu
XG4iLmpvaW4oc2VjdGlvbnMpCiAKICAgICBkZWYgZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlv
bnMoc2VsZik6Ci0gICAgICAgIHJldHVybiAiIiJuYW1lc3BhY2UgSlNDIHsKKyAgICAgICAgcmV0
dXJuICIiIgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorCituYW1lc3BhY2UgSlNDIHsKIGNs
YXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIFZNOworY2xhc3MgUGFyc2VyRXJyb3I7CiAK
IGVudW0gY2xhc3MgQ29uc3RydWN0QWJpbGl0eSA6IHVuc2lnbmVkOwotfSIiIgorfQorIiIiCiAK
ICAgICBkZWYgZ2VuZXJhdGVfc2VjdGlvbl9mb3Jfb2JqZWN0KHNlbGYsIG9iamVjdCk6CiAgICAg
ICAgIGxpbmVzID0gW10KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRl
X2hlYWRlci5weQppbmRleCA1OGM4ZjJhYzhhNjQxNWEyOTFjZmY4ODhjZjFmNjgwYzFkNjYwNDdk
Li4xODg5NjI1OWIyZjNlYTZhOTYwNGE5YzQ4ZTBlMTk1ZDA2OGNiZjJhIDEwMDc1NQotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9z
ZXBhcmF0ZV9oZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVp
bHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5CkBAIC05Miw2ICs5Miwx
MCBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgICAgICAgICAgICAgKCJKYXZhU2Ny
aXB0Q29yZSIsICJieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIiksCiAgICAg
ICAgICAgICApLAogCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAg
KCJKYXZhU2NyaXB0Q29yZSIsICJwYXJzZXIvUGFyc2VyRXJyb3IuaCIpLAorICAgICAgICAgICAg
KSwKKwogICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAogICAgICAgICAgICAgICAgICgiSmF2YVNj
cmlwdENvcmUiLCAiYnVpbHRpbnMvQnVpbHRpblV0aWxzLmgiKSwKICAgICAgICAgICAgICksCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGlu
c190ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9i
dWlsdGluc190ZW1wbGF0ZXMucHkKaW5kZXggOTA3YTZkNzE3YzkxMGNiMDcyOTk1MDljNjFkZjg0
NmE5YzcwMWVmYy4uZDZlYWUwZWFiMDAyOWFmY2NmMjUzNWE5NjNmYWEzYTA3NGNkMWQyMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNf
dGVtcGxhdGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5z
L2J1aWx0aW5zX3RlbXBsYXRlcy5weQpAQCAtNjgsMTQgKzY4LDE0IEBAIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KIAogICAgIENvbWJpbmVkSGVhZGVyU3RhdGljTWFjcm9zID0gKAog
ICAgICIiIiNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rp
b25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKLSAgICBKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisgICAgRXhwZWN0
ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBjb2RlTmFtZSMj
R2VuZXJhdG9yKEpTQzo6Vk0mKTsKIAogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NP
REUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VO
RVJBVE9SIiIiKQogCiAgICAgU2VwYXJhdGVIZWFkZXJTdGF0aWNNYWNyb3MgPSAoCiAgICAgIiIi
I2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUs
IG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcXAotICAgIEpTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKyAgICBFeHBlY3RlZDxKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0
b3IoSlNDOjpWTSYpOwogCiAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JV
SUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFQ0xBUkVfQlVJ
TFRJTl9HRU5FUkFUT1IiIiIpCkBAIC04Myw5ICs4MywxMiBAQCAke21hY3JvUHJlZml4fV9GT1JF
QUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9S
KQogICAgIENvbWJpbmVkSlNDSW1wbGVtZW50YXRpb25TdGF0aWNNYWNyb3MgPSAoCiAgICAgIiIi
CiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1l
LCBvdmVycmlkZGVuTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKLUpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAorRXhwZWN0ZWQ8SlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9y
KEpTQzo6Vk0mIHZtKSBcXAoge1xcCi0gICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygp
LT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMo
KS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmlu
c2ljKTsgXAorICAgIGF1dG8gZXhwZWN0ZWRVbmxpbmtlZCA9IHZtLmJ1aWx0aW5FeGVjdXRhYmxl
cygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpO1xcCisgICAgaWYgKCFleHBlY3RlZFVubGlua2Vk
Lmhhc192YWx1ZSgpKVxcCisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChleHBlY3RlZFVu
bGlua2VkLmVycm9yKCkpO1xcCisgICAgICAgIHJldHVybiBFeHBlY3RlZDxKU0M6OkZ1bmN0aW9u
RXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+KGV4cGVjdGVkVW5saW5rZWQudmFsdWUoKS0+
bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgc3Rk
OjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYykpO1xcCiB9CiAke21hY3JvUHJlZml4
fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYg
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCkBAIC05NCw5ICs5NywxMiBAQCAke21hY3JvUHJlZml4
fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAgICAgU2Vw
YXJhdGVKU0NJbXBsZW1lbnRhdGlvblN0YXRpY01hY3JvcyA9ICgKICAgICAiIiIKICNkZWZpbmUg
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRk
ZW5OYW1lLCBhcmd1bWVudENvdW50KSBcXAotSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVO
YW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCitFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYg
dm0pIFxcCiB7XFwKLSAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1l
IyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFt
ZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisg
ICAgYXV0byBleHBlY3RlZFVubGlua2VkID0gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVO
YW1lIyNFeGVjdXRhYmxlKCk7XFwKKyAgICBpZiAoIWV4cGVjdGVkVW5saW5rZWQuaGFzX3ZhbHVl
KCkpXFwKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV4cGVjdGVkVW5saW5rZWQuZXJy
b3IoKSk7XFwKKyAgICByZXR1cm4gRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBK
U0M6OlBhcnNlckVycm9yPihleHBlY3RlZFVubGlua2VkLnZhbHVlKCktPmxpbmsodm0sIHZtLmJ1
aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18j
I2NvZGVOYW1lIyNJbnRyaW5zaWMpKTtcXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29i
amVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVm
IERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpAQCAtMTA1LDEwICsxMTEsMTAgQEAgJHttYWNyb1By
ZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5f
R0VORVJBVE9SKQogICAgIENvbWJpbmVkV2ViQ29yZUltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9z
ID0gKAogICAgICAgICAiIiIKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVO
YW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcXAotSlND
OjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxc
CitFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNv
ZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCiB7XFwKICAgICBKU1ZNQ2xpZW50RGF0
YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0
YSk7IFxcCi0gICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVj
dE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVu
dERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVO
YW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFxc
CisgICAgcmV0dXJuIEV4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJz
ZXJFcnJvcj4oY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1
aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS52YWx1ZSgpLT5saW5rKHZtLCBjbGllbnRE
YXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFt
ZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpKTsgXFwK
IH0KICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dF
TkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKQEAgLTExNywxMCArMTIz
LDEwIEBAICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElO
X0dFTkVSQVRPUikKICAgICBTZXBhcmF0ZVdlYkNvcmVJbXBsZW1lbnRhdGlvblN0YXRpY01hY3Jv
cyA9ICgKICAgICAgICAgIiIiCiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2Rl
TmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKLUpT
Qzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBc
XAorRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBj
b2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAoge1xcCiAgICAgSlNWTUNsaWVudERh
dGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERh
dGEpOyBcXAotICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmpl
Y3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGll
bnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2Rl
TmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBc
XAorICAgIHJldHVybiBFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFy
c2VyRXJyb3I+KGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31C
dWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCkudmFsdWUoKS0+bGluayh2bSwgY2xpZW50
RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5h
bWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKSk7IFxc
CiB9CiAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShE
RUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9S
CkBAIC0xMzksNyArMTQ1LDcgQEAgcHVibGljOgogICAgIH0KIAogI2RlZmluZSBFWFBPU0VfQlVJ
TFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5n
dGgpIFxcCi0gICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0
YWJsZSgpOyBcXAorRXhwZWN0ZWQ8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpT
Qzo6UGFyc2VyRXJyb3I+IG5hbWUjI0V4ZWN1dGFibGUoKTsgXFwKICAgICBjb25zdCBKU0M6OlNv
dXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7
IH0KICAgICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09E
RShFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKICN1bmRlZiBFWFBPU0VfQlVJTFRJTl9FWEVD
VVRBQkxFUwpAQCAtMTYyLDcgKzE2OCw3IEBAIHByaXZhdGU6CiB9OwogCiAjZGVmaW5lIERFRklO
RV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUs
IGxlbmd0aCkgXFwKLWlubGluZSBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiAke29i
amVjdE5hbWV9QnVpbHRpbnNXcmFwcGVyOjpuYW1lIyNFeGVjdXRhYmxlKCkgXFwKK2lubGluZSBF
eHBlY3RlZDxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJv
cj4gJHtvYmplY3ROYW1lfUJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFxcCiB7
XFwKICAgICBpZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxlKSB7XFwKICAgICAgICAgSlNDOjpJZGVu
dGlmaWVyIGV4ZWN1dGFibGVOYW1lID0gZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCk7XFwKQEAg
LTE3MCw3ICsxNzYsNyBAQCBpbmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
JHtvYmplY3ROYW1lfUJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlYwogICAgICAgICAgICAgZXhl
Y3V0YWJsZU5hbWUgPSBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fdm0sIG92ZXJyaWRk
ZW5OYW1lKTtcXAogICAgICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IEpTQzo6V2VhazxKU0M6
OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPihKU0M6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxl
KG1fdm0sIG1fIyNuYW1lIyNTb3VyY2UsIGV4ZWN1dGFibGVOYW1lLCBzXyMjbmFtZSMjQ29uc3Ry
dWN0QWJpbGl0eSksIHRoaXMsICZtXyMjbmFtZSMjRXhlY3V0YWJsZSk7XFwKICAgICB9XFwKLSAg
ICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7XFwKKyAgICByZXR1cm4gRXhwZWN0
ZWQ8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+KG1f
IyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpKTtcXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8k
e29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCiAj
dW5kZWYgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMKQEAgLTIwMiw3ICsyMDgsNyBAQCBwdWJs
aWM6CiBpbmxpbmUgdm9pZCAke29iamVjdE5hbWV9QnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6
OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAjZGVmaW5lIEVYUE9SVF9GVU5DVElP
Tihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgbGVuZ3RoKVxcCi0gICAg
bV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6
SlNGdW5jdGlvbjo6Y3JlYXRlKG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0b3IobV92bSksICZnbG9i
YWxPYmplY3QpKTsKKyAgICBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbi5zZXQobV92bSwgJmds
b2JhbE9iamVjdCwgSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGUobV92bSwgY29kZU5hbWUjI0dlbmVy
YXRvcihtX3ZtKS52YWx1ZSgpLCAmZ2xvYmFsT2JqZWN0KSk7CiAgICAgJHttYWNyb1ByZWZpeH1f
Rk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoRVhQT1JUX0ZVTkNUSU9OKQogI3Vu
ZGVmIEVYUE9SVF9GVU5DVElPTgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGFh
OTYzZjUyNzVjMGVkYzhlNjU0Nzk1ZWI1YTg5Yjk2NzFjYWU1YmMuLjQ5ZjU3ZGRjMjVmM2MxMzYz
NzE2YTVhODFkYTQ0ZDg1MTk1ZGNjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAg
LTE3OSw3ICsxNzksNiBAQCBiaW5kaW5ncy9TY3JpcHRPYmplY3QuY3BwCiBiaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5jcHAKIAogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAotYnVpbHRpbnMv
QnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmNwcAogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmNwcAog
CiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNjU0LDYgKzY1Myw3IEBAIHBhcnNlci9Ob2Rl
cy5jcHAKIHBhcnNlci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwCiBwYXJzZXIvUGFyc2VyLmNwcAog
cGFyc2VyL1BhcnNlckFyZW5hLmNwcAorcGFyc2VyL1BhcnNlckVycm9yLmNwcAogcGFyc2VyL1Nv
dXJjZVByb3ZpZGVyLmNwcAogcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwCiBwYXJzZXIv
VW5saW5rZWRTb3VyY2VDb2RlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMmI3OWU3ZTZlZjk1Y2UyMWM0NDMyM2E2ZWE0MWQzNmEzM2ZhMzU5
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQnVpbHRpbkV4
ZWN1dGFibGVDcmVhdG9yLmgiCi0KLSNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKLQot
bmFtZXNwYWNlIEpTQyB7Ci0KLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWls
dGluRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIENvbnN0cnVjdG9yS2luZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGFi
aWxpdHkpCi17Ci0gICAgcmV0dXJuIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJs
ZSh2bSwgc291cmNlLCBpZGVudCwga2luZCwgYWJpbGl0eSk7Ci19Ci0gICAgCi19IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluRXhlY3V0YWJsZUNyZWF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MTljMDg4NGI3YjYxZGYwODBjZGFjM2FlNWNiMmQwNmVlMzM1YWUxMi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpbmNsdWRlICJDb25zdHJ1Y3RBYmlsaXR5LmgiCi0jaW5jbHVkZSAiUGFy
c2VyTW9kZXMuaCIKLSNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCi0KLW5hbWVzcGFjZSBKU0Mgewot
Ci1KU19FWFBPUlRfUFJJVkFURSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVp
bHRpbkV4ZWN1dGFibGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYs
IENvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSk7Ci0KLX0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcAppbmRleCBhZDBkODM5YWUxOTE4NDA0OTNjNjVmYzQyODJkNDc1NTIxMDcxNmRj
Li5lZjY5OTYwNjEyYTJiOWJlODc0Y2NkYjg2M2RmMzljODVlYzU0NTFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQu
aD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBA
IC01MSwyNSArNTIsMzQgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENvbnN0cnUKICAgICBjYXNlIENvbnN0
cnVjdG9yS2luZDo6Tm9uZToKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb25zdHJ1Y3Rvcktp
bmQ6OkJhc2U6Ci0gICAgICAgIHJldHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIG1ha2VTb3Vy
Y2UoYmFzZUNvbnN0cnVjdG9yQ29kZSwgeyB9KSwgbmFtZSwgY29uc3RydWN0b3JLaW5kLCBDb25z
dHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QpOworICAgICAgICByZXR1cm4gY3JlYXRlRXhlY3V0
YWJsZU9yQ3Jhc2gobV92bSwgbWFrZVNvdXJjZShiYXNlQ29uc3RydWN0b3JDb2RlLCB7IH0pLCBu
YW1lLCBjb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCk7CiAg
ICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHM6Ci0gICAgICAgIHJldHVybiBjcmVhdGVF
eGVjdXRhYmxlKG1fdm0sIG1ha2VTb3VyY2UoZGVyaXZlZENvbnN0cnVjdG9yQ29kZSwgeyB9KSwg
bmFtZSwgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QpOwor
ICAgICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZU9yQ3Jhc2gobV92bSwgbWFrZVNvdXJjZShk
ZXJpdmVkQ29uc3RydWN0b3JDb2RlLCB7IH0pLCBuYW1lLCBjb25zdHJ1Y3RvcktpbmQsIENvbnN0
cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCk7CiAgICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBudWxscHRyOworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6
OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvdXJjZUNvZGUmIGNvZGUsIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSkKK0V4cGVj
dGVkVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVC
dWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiBjb2RlLCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkpCiB7CiAgICAgcmV0dXJu
IGNyZWF0ZUV4ZWN1dGFibGUobV92bSwgY29kZSwgbmFtZSwgQ29uc3RydWN0b3JLaW5kOjpOb25l
LCBjb25zdHJ1Y3RBYmlsaXR5KTsKIH0KIAogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNy
ZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgY29kZSwgY29u
c3QgSWRlbnRpZmllciYgbmFtZSwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KQog
ewotICAgIHJldHVybiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUodm0sIGNv
ZGUsIG5hbWUsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgY29uc3RydWN0QWJpbGl0eSk7CisgICAg
cmV0dXJuIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZU9yQ3Jhc2godm0sIGNv
ZGUsIG5hbWUsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgY29uc3RydWN0QWJpbGl0eSk7CiB9CiAK
LVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4
ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0IElkZW50aWZp
ZXImIG5hbWUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxp
dHkgY29uc3RydWN0QWJpbGl0eSkKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGlu
RXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGVPckNyYXNoKFZNJiB2bSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkpCit7CisgICAg
YXV0byBleHBlY3RlZCA9IEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZSh2bSwg
c291cmNlLCBuYW1lLCBjb25zdHJ1Y3RvcktpbmQsIGNvbnN0cnVjdEFiaWxpdHkpOworICAgIGlm
ICghZXhwZWN0ZWQuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgZGF0YUxvZ0xuKCJGYXRhbCBlcnJv
ciBjb21waWxpbmcgYnVpbHRpbiBmdW5jdGlvbiAnIiwgbmFtZS5zdHJpbmcoKSwgIiciKTsKKyAg
ICAgICAgQ1JBU0goKTsKKyAgICB9CisgICAgcmV0dXJuIGV4cGVjdGVkLnZhbHVlKCk7Cit9CisK
K0V4cGVjdGVkVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgQnVpbHRpbkV4ZWN1dGFibGVzOjpj
cmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1
Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkpCiB7CiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZTsKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKQEAgLTgzLDggKzkz
LDggQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3Jl
YXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFMKICAgICAgICAgJnBvc2l0aW9uQmVmb3JlTGFz
dE5ld2xpbmUsIGNvbnN0cnVjdG9yS2luZCk7CiAKICAgICBpZiAoIXByb2dyYW0pIHsKLSAgICAg
ICAgZGF0YUxvZygiRmF0YWwgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW4gZnVuY3Rpb24gJyIsIG5h
bWUuc3RyaW5nKCksICInOiAiLCBlcnJvci5tZXNzYWdlKCkpOwotICAgICAgICBDUkFTSCgpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChlcnJvci5pc1ZhbGlkKCkpOworICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoV1RGTW92ZShlcnJvcikpOwogICAgIH0KIAogICAgIFN0YXRlbWVudE5v
ZGUqIGV4cHJTdGF0ZW1lbnQgPSBwcm9ncmFtLT5zaW5nbGVTdGF0ZW1lbnQoKTsKQEAgLTEwNiw3
ICsxMTYsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVz
OjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgUwogICAgIG1ldGFkYXRhLT5vdmVycmlk
ZU5hbWUobmFtZSk7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBkdW1teVREWlZhcmlhYmxlczsK
ICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIGtp
bmQsIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgZHVtbXlU
RFpWYXJpYWJsZXMsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgV1RGTW92ZShwYXJlbnRTb3Vy
Y2VPdmVycmlkZSkpOwotICAgIHJldHVybiBmdW5jdGlvbkV4ZWN1dGFibGU7CisgICAgcmV0dXJu
IEV4cGVjdGVkVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoZnVuY3Rpb25FeGVjdXRhYmxlKTsK
IH0KIAogdm9pZCBCdWlsdGluRXhlY3V0YWJsZXM6OmZpbmFsaXplKEhhbmRsZTxVbmtub3duPiwg
dm9pZCogY29udGV4dCkKQEAgLTExNSwxNSArMTI1LDE4IEBAIHZvaWQgQnVpbHRpbkV4ZWN1dGFi
bGVzOjpmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpCiB9CiAKICNkZWZp
bmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlk
ZU5hbWUsIGxlbmd0aCkgXAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVj
dXRhYmxlczo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK0V4cGVjdGVkVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUgQnVpbHRpbkV4ZWN1dGFibGVzOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAoge1wKICAg
ICBpZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxlKSB7XAogICAgICAgICBJZGVudGlmaWVyIGV4ZWN1
dGFibGVOYW1lID0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mdW5jdGlvbk5h
bWUjI1B1YmxpY05hbWUoKTtcCiAgICAgICAgIGlmIChvdmVycmlkZU5hbWUpXAogICAgICAgICAg
ICAgZXhlY3V0YWJsZU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZtX3ZtLCBvdmVycmlk
ZU5hbWUpO1wKLSAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBXZWFrPFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlPihjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtXyMjbmFtZSMjU291cmNl
LCBleGVjdXRhYmxlTmFtZSwgc18jI25hbWUjI0NvbnN0cnVjdEFiaWxpdHkpLCB0aGlzLCAmbV8j
I25hbWUjI0V4ZWN1dGFibGUpO1wKKyAgICAgICAgRXhwZWN0ZWRVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSBmID0gY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV8jI25hbWUjI1NvdXJjZSwgZXhl
Y3V0YWJsZU5hbWUsIHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KTtcCisgICAgICAgIGlmICgh
Zi5oYXNfdmFsdWUoKSlcCisgICAgICAgICAgICByZXR1cm4gZjtcCisgICAgICAgIG1fIyNuYW1l
IyNFeGVjdXRhYmxlID0gV2VhazxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4oZi52YWx1ZSgp
LCB0aGlzLCAmbV8jI25hbWUjI0V4ZWN1dGFibGUpO1wKICAgICB9XAotICAgIHJldHVybiBtXyMj
bmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcCisgICAgcmV0dXJuIEV4cGVjdGVkVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUobV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCkpO1wKIH0KIEpTQ19GT1JF
QUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKICN1bmRlZiBFWFBP
U0VfQlVJTFRJTl9TT1VSQ0VTCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKaW5kZXggMzY4YTMxYjdhY2I2YTMyYzlkNThlNWRlMjgw
MWMyODliYmY1MmEyZi4uNzI0NjZkMWEzMmUzY2I0NjYzYzIxOTBhMjkzMThhNjExNzg5NDdkZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0
YWJsZXMuaApAQCAtMjYsMTAgKzI2LDExIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkpT
Q0J1aWx0aW5zLmgiCi0jaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIu
aCIKICNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiV2Vhay5oIgogI2luY2x1ZGUg
IldlYWtIYW5kbGVPd25lci5oIgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIApAQCAtMzcsMTMgKzM4LDE1IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOwogY2xhc3MgSWRlbnRpZmllcjsKIGNsYXNzIFZNOwogCit0eXBlZGVmIEV4cGVjdGVk
PFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgUGFyc2VyRXJyb3I+IEV4cGVjdGVkVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU7CisKIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlcyBmaW5hbDog
cHJpdmF0ZSBXZWFrSGFuZGxlT3duZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIGV4cGxpY2l0IEJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYpOwogCiAjZGVmaW5l
IEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRl
bk5hbWUsIGxlbmd0aCkgXAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1
dGFibGUoKTsgXAorRXhwZWN0ZWRVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBuYW1lIyNFeGVj
dXRhYmxlKCk7IFwKIGNvbnN0IFNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIHsgcmV0dXJuIG1f
IyNuYW1lIyNTb3VyY2U7IH0KICAgICAKICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoRVhQ
T1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCkBAIC01MSwxMyArNTQsMTQgQEAgY29uc3QgU291cmNl
Q29kZSYgbmFtZSMjU291cmNlKCkgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQogCiAgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvcihDb25z
dHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwogCi0gICAgc3RhdGljIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNl
Q29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBDb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxp
dHkpOworICAgIHN0YXRpYyBFeHBlY3RlZFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGNyZWF0
ZUV4ZWN1dGFibGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIENv
bnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSk7CisgICAgc3RhdGljIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlT3JDcmFzaChWTSYsIGNvbnN0IFNvdXJj
ZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgQ29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmls
aXR5KTsKIHByaXZhdGU6CiAgICAgdm9pZCBmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4sIHZvaWQq
IGNvbnRleHQpIG92ZXJyaWRlOwogCiAgICAgVk0mIG1fdm07CiAKLSAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoY29uc3QgU291cmNlQ29kZSYs
IGNvbnN0IElkZW50aWZpZXImLCBDb25zdHJ1Y3RBYmlsaXR5KTsKKyAgICBFeHBlY3RlZFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvdXJj
ZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgQ29uc3RydWN0QWJpbGl0eSk7CiAKICNkZWZpbmUg
REVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJp
ZGRlbk5hbWUsIGxlbmd0aClcCiAgICAgU291cmNlQ29kZSBtXyMjbmFtZSMjU291cmNlOyBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKaW5kZXggMGVkZmUzZGY0ZWY2MzhjMTEyNWE3YzJhMzkwYjM4MGE0ZDJjMjE0Ni4u
ZGRiNDYxMjI2ZTM3NDY1NmFmMGIxMjU5ZjM1Yzg5N2Y2YTNjNTExMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApA
QCAtMzEsNiArMzEsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
KyNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAi
SW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJyb3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJFcnJvci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWQxYzllMTVkOGJiZWE0MWY2MTQwNzRhZThkZGM5MWQzNWE3YWY2ZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJyb3IuY3BwCkBAIC0wLDAg
KzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhcnNlckVycm9yLmgiCisKKyNpbmNsdWRl
ICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCisj
aW5jbHVkZSAiSGVhcENlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBKU0MgeworSlNPYmplY3QqIFBhcnNlckVycm9yOjp0b0Vycm9yT2Jq
ZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgaW50IG92ZXJyaWRlTGluZU51bWJlcikKK3sKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2Ug
RXJyb3JOb25lOgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBjYXNlIFN5bnRheEVycm9y
OiB7CisgICAgICAgIGF1dG8gc3ludGF4RXJyb3IgPSBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBt
X21lc3NhZ2UpOworICAgICAgICBhdXRvIGxpbmUgPSBvdmVycmlkZUxpbmVOdW1iZXIgPT0gLTEg
PyBtX2xpbmUgOiBvdmVycmlkZUxpbmVOdW1iZXI7CisgICAgICAgIHJldHVybiBhZGRFcnJvcklu
Zm8oZXhlYywgc3ludGF4RXJyb3IsIGxpbmUsIHNvdXJjZSk7CisgICAgfQorICAgIGNhc2UgRXZh
bEVycm9yOgorICAgICAgICByZXR1cm4gY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgbV9tZXNzYWdl
KTsKKyAgICBjYXNlIFN0YWNrT3ZlcmZsb3c6IHsKKyAgICAgICAgRXJyb3JIYW5kbGluZ1Njb3Bl
IGVycm9yU2NvcGUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVN0
YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICB9CisgICAgY2FzZSBPdXRPZk1lbW9yeToKKyAg
ICAgICAgcmV0dXJuIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgfQorICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK0pTT2JqZWN0KiBQYXJzZXJFcnJvcjo6
dGhyb3dTdGFja092ZXJmbG93T3JPdXRPZk1lbW9yeShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIEVycm9yTm9uZToKKyAgICBj
YXNlIEV2YWxFcnJvcjoKKyAgICBjYXNlIFN5bnRheEVycm9yOgorICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2UgU3RhY2tPdmVyZmxvdzoKKyAgICAgICAgaWYg
KCFleGVjKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIkhpdCBhIHN0YWNrIG92ZXJmbG93IHdo
aWxlIHBhcnNpbmcsIGRpZCBub3QgaGF2ZSBhbiBFeGVjU3RhdGUgdG8gcHJvZHVjZSBhIHJlY292
ZXJhYmxlIGpzIGV4Y2VwdGlvbiIpOworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOworICAg
IGNhc2UgT3V0T2ZNZW1vcnk6CisgICAgICAgIGlmICghZXhlYykgeworICAgICAgICAgICAgZGF0
YUxvZ0xuKCJIaXQgYSBzdGFjayBvdmVyZmxvdyB3aGlsZSBwYXJzaW5nLCBkaWQgbm90IGhhdmUg
YW4gRXhlY1N0YXRlIHRvIHByb2R1Y2UgYSByZWNvdmVyYWJsZSBqcyBleGNlcHRpb24iKTsKKyAg
ICAgICAgICAgIENSQVNIKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7Cit2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpQYXJzZXJFcnJvcjo6U3ludGF4
RXJyb3JUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBKU0M6OlBh
cnNlckVycm9yOjpTeW50YXhFcnJvck5vbmU6CisgICAgICAgIG91dC5wcmludCgiU3ludGF4RXJy
b3JOb25lIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN5
bnRheEVycm9ySXJyZWNvdmVyYWJsZToKKyAgICAgICAgb3V0LnByaW50KCJTeW50YXhFcnJvckly
cmVjb3ZlcmFibGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJv
cjo6U3ludGF4RXJyb3JVbnRlcm1pbmF0ZWRMaXRlcmFsOgorICAgICAgICBvdXQucHJpbnQoIlN5
bnRheEVycm9yVW50ZXJtaW5hdGVkTGl0ZXJhbCIpOworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJvclJlY292ZXJhYmxlOgorICAgICAgICBvdXQu
cHJpbnQoIlN5bnRheEVycm9yUmVjb3ZlcmFibGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpQYXJzZXJFcnJvcjo6RXJyb3JUeXBlIHR5cGUpCit7
CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpFcnJvck5v
bmU6CisgICAgICAgIG91dC5wcmludCgiRXJyb3JOb25lIik7CisgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN0YWNrT3ZlcmZsb3c6CisgICAgICAgIG91dC5wcmlu
dCgiU3RhY2tPdmVyZmxvdyIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6OlBhcnNl
ckVycm9yOjpFdmFsRXJyb3I6CisgICAgICAgIG91dC5wcmludCgiRXZhbEVycm9yIik7CisgICAg
ICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6Ok91dE9mTWVtb3J5OgorICAg
ICAgICBvdXQucHJpbnQoIk91dE9mTWVtb3J5Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9yOgorICAgICAgICBvdXQucHJpbnQoIlN5bnRh
eEVycm9yIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJFcnJvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJFcnJvci5oCmluZGV4IDc4ODNlZmVkMjI1MDIyYzAyMDZiNzg2NDBiNWE3
MTc4OWQ5Y2VhNTIuLmMwYmMzOTk0ZTFiMmM0OTA2NjlhN2M4ODhjODdlNjY2YTA4YjJhNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJyb3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckVycm9yLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDkgKzI1LDYg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJFcnJvci5oIgotI2luY2x1ZGUgIkVycm9y
SGFuZGxpbmdTY29wZS5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRl
ICJQYXJzZXJUb2tlbnMuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAt
ODQsMzEgKzgxLDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWVzc2FnZTsgfQogICAgIGludCBsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9s
aW5lOyB9CiAKLSAgICBKU09iamVjdCogdG9FcnJvck9iamVjdCgKLSAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCAKLSAgICAgICAg
aW50IG92ZXJyaWRlTGluZU51bWJlciA9IC0xKQotICAgIHsKLSAgICAgICAgRXhlY1N0YXRlKiBl
eGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7Ci0gICAgICAgIHN3aXRjaCAobV90eXBl
KSB7Ci0gICAgICAgIGNhc2UgRXJyb3JOb25lOgotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIGNhc2UgU3ludGF4RXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gYWRkRXJyb3JJ
bmZvKAotICAgICAgICAgICAgICAgIGV4ZWMsIAotICAgICAgICAgICAgICAgIGNyZWF0ZVN5bnRh
eEVycm9yKGV4ZWMsIG1fbWVzc2FnZSksIAotICAgICAgICAgICAgICAgIG92ZXJyaWRlTGluZU51
bWJlciA9PSAtMSA/IG1fbGluZSA6IG92ZXJyaWRlTGluZU51bWJlciwgc291cmNlKTsKLSAgICAg
ICAgY2FzZSBFdmFsRXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gY3JlYXRlU3ludGF4RXJyb3Io
ZXhlYywgbV9tZXNzYWdlKTsKLSAgICAgICAgY2FzZSBTdGFja092ZXJmbG93OiB7Ci0gICAgICAg
ICAgICBFcnJvckhhbmRsaW5nU2NvcGUgZXJyb3JTY29wZShnbG9iYWxPYmplY3QtPnZtKCkpOwot
ICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIE91dE9mTWVtb3J5OgotICAgICAgICAgICAgcmV0dXJuIGNyZWF0
ZU91dE9mTWVtb3J5RXJyb3IoZXhlYyk7Ci0gICAgICAgIH0KLSAgICAgICAgQ1JBU0goKTsKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQorICAgIEpTT2JqZWN0KiB0b0Vycm9yT2JqZWN0
KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIGludCBvdmVycmlkZUxpbmVOdW1i
ZXIgPSAtMSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93U3RhY2tPdmVy
Zmxvd09yT3V0T2ZNZW1vcnkoRXhlY1N0YXRlKiA9IG51bGxwdHIpOwogCiBwcml2YXRlOgogICAg
IEpTVG9rZW4gbV90b2tlbjsKQEAgLTEyMSw0OCArOTUsNiBAQCBwcml2YXRlOgogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKIG5hbWVzcGFjZSBXVEYgewotCi1pbmxpbmUgdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9yVHlwZSB0eXBl
KQotewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6U3lu
dGF4RXJyb3JOb25lOgotICAgICAgICBvdXQucHJpbnQoIlN5bnRheEVycm9yTm9uZSIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJvcklycmVj
b3ZlcmFibGU6Ci0gICAgICAgIG91dC5wcmludCgiU3ludGF4RXJyb3JJcnJlY292ZXJhYmxlIik7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9y
VW50ZXJtaW5hdGVkTGl0ZXJhbDoKLSAgICAgICAgb3V0LnByaW50KCJTeW50YXhFcnJvclVudGVy
bWluYXRlZExpdGVyYWwiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpQYXJzZXJF
cnJvcjo6U3ludGF4RXJyb3JSZWNvdmVyYWJsZToKLSAgICAgICAgb3V0LnByaW50KCJTeW50YXhF
cnJvclJlY292ZXJhYmxlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotaW5saW5lIHZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBKU0M6OlBhcnNlckVycm9yOjpFcnJvclR5cGUgdHlwZSkKLXsK
LSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OkVycm9yTm9u
ZToKLSAgICAgICAgb3V0LnByaW50KCJFcnJvck5vbmUiKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6U3RhY2tPdmVyZmxvdzoKLSAgICAgICAgb3V0LnByaW50
KCJTdGFja092ZXJmbG93Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpTQzo6UGFyc2Vy
RXJyb3I6OkV2YWxFcnJvcjoKLSAgICAgICAgb3V0LnByaW50KCJFdmFsRXJyb3IiKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6T3V0T2ZNZW1vcnk6Ci0gICAg
ICAgIG91dC5wcmludCgiT3V0T2ZNZW1vcnkiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
SlNDOjpQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3I6Ci0gICAgICAgIG91dC5wcmludCgiU3ludGF4
RXJyb3IiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBK
U0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJvclR5cGUpOwordm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiwgSlNDOjpQYXJzZXJFcnJvcjo6RXJyb3JUeXBlKTsKIH0gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNJdGVy
YXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0l0
ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCA4MDBjZmEwOTY0MWMwY2EyODA4ZjA1NjAxMmVkYTNk
MDIzMjIzN2Y3Li4xNzYxOTkwOWM1M2Y0ZmQ1MGNiMmQzNGNiNGQ4YTI0YjQ3MmI5MTNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0l0ZXJhdG9y
UHJvdG90eXBlLmNwcApAQCAtNDEsNyArNDEsNyBAQCB2b2lkIEFzeW5jSXRlcmF0b3JQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAog
ICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CiAgICAgZGlkQmVjb21lUHJvdG90eXBl
KCk7CiAKLSAgICBKU0Z1bmN0aW9uKiBhc3luY0l0ZXJhdG9yUHJvdG90eXBlRnVuY3Rpb24gPSBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGFzeW5jSXRlcmF0b3JQcm90b3R5cGVTeW1ib2xBc3luY0l0
ZXJhdG9yR2V0dGVyQ29kZUdlbmVyYXRvcih2bSksIGdsb2JhbE9iamVjdCk7CisgICAgSlNGdW5j
dGlvbiogYXN5bmNJdGVyYXRvclByb3RvdHlwZUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBhc3luY0l0ZXJhdG9yUHJvdG90eXBlU3ltYm9sQXN5bmNJdGVyYXRvckdldHRlckNvZGVH
ZW5lcmF0b3Iodm0pLnZhbHVlKCksIGdsb2JhbE9iamVjdCk7CiAgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmFzeW5jSXRlcmF0b3JTeW1ib2wsIGFz
eW5jSXRlcmF0b3JQcm90b3R5cGVGdW5jdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKaW5kZXggZDBmZDc2MjQ3Y2JjMTZi
NjBhNGJhMmU0ZDNiMzVlODhlNmU0OWZkOS4uYTZlZDM1YTAwNmY0ODIwMDc3Y2RmZTdhZjlkMTNj
NDI4MDE0Mzg3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtNjMsMTEgKzYzLDExIEBAIHZvaWQgRnVuY3Rpb25Qcm90
b3R5cGU6OmFkZEZ1bmN0aW9uUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnCiAgICAgSlNGdW5jdGlvbiogdG9TdHJpbmdGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZy5zdHJp
bmcoKSwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nLCB0b1N0cmluZ0Z1bmN0aW9u
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAK
LSAgICAqYXBwbHlGdW5jdGlvbiA9IHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmFwcGx5UHVibGljTmFtZSgpLCBmdW5jdGlvblByb3RvdHlwZUFwcGx5Q29kZUdlbmVyYXRvcih2
bSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
LSAgICAqY2FsbEZ1bmN0aW9uID0gcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24odm0sIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
Y2FsbFB1YmxpY05hbWUoKSwgZnVuY3Rpb25Qcm90b3R5cGVDYWxsQ29kZUdlbmVyYXRvcih2bSks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAg
ICBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5iaW5kLCBmdW5jdGlvblByb3RvdHlwZUJpbmRDb2RlR2Vu
ZXJhdG9yKHZtKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOworICAgICphcHBseUZ1bmN0aW9uID0gcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuYXBwbHlQdWJsaWNOYW1lKCksIGZ1bmN0aW9uUHJvdG90eXBlQXBwbHlDb2RlR2Vu
ZXJhdG9yKHZtKS52YWx1ZSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CisgICAgKmNhbGxGdW5jdGlvbiA9IHB1dERpcmVjdEJ1aWx0aW5GdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmNhbGxQdWJsaWNOYW1lKCksIGZ1bmN0aW9uUHJvdG90eXBlQ2FsbENv
ZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5iaW5kLCBmdW5j
dGlvblByb3RvdHlwZUJpbmRDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKLSAgICAqaGFzSW5zdGFu
Y2VTeW1ib2xGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb25Qcm90b3R5
cGVTeW1ib2xIYXNJbnN0YW5jZUNvZGVHZW5lcmF0b3Iodm0pLCBnbG9iYWxPYmplY3QpOworICAg
ICpoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBmdW5j
dGlvblByb3RvdHlwZVN5bWJvbEhhc0luc3RhbmNlQ29kZUdlbmVyYXRvcih2bSkudmFsdWUoKSwg
Z2xvYmFsT2JqZWN0KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+aGFzSW5zdGFuY2VTeW1ib2wsICpoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9u
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggOGY4NDBj
YzQ3ZGY0MjM1NTBkNTNjNDg2ODUzY2RiZDljYmFhNmU1ZS4uZDlhOWEyNzAxY2E2ZDg0MTE4YWY5
NjMyNmVjZDIyYTE5Y2RhYTQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNDQzLDI0ICs0NDMsMjQgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgIH0pOwogICAgIG1fYXJyYXlQcm90b1ZhbHVl
c0Z1bmN0aW9uLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVu
Y3Rpb24+JiBpbml0KSB7Ci0gICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUo
aW5pdC52bSwgYXJyYXlQcm90b3R5cGVWYWx1ZXNDb2RlR2VuZXJhdG9yKGluaXQudm0pLCBpbml0
Lm93bmVyKSk7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52
bSwgYXJyYXlQcm90b3R5cGVWYWx1ZXNDb2RlR2VuZXJhdG9yKGluaXQudm0pLnZhbHVlKCksIGlu
aXQub3duZXIpKTsKICAgICAgICAgfSk7CiAgICAgbV9pbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9u
LmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rpb24+JiBp
bml0KSB7Ci0gICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwg
cHJvbWlzZU9wZXJhdGlvbnNJbml0aWFsaXplUHJvbWlzZUNvZGVHZW5lcmF0b3IoaW5pdC52bSks
IGluaXQub3duZXIpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShp
bml0LnZtLCBwcm9taXNlT3BlcmF0aW9uc0luaXRpYWxpemVQcm9taXNlQ29kZUdlbmVyYXRvcihp
bml0LnZtKS52YWx1ZSgpLCBpbml0Lm93bmVyKSk7CiAgICAgICAgIH0pOwogCiAgICAgbV9pdGVy
YXRvclByb3RvY29sRnVuY3Rpb24uaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlh
bGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKLSAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rp
b246OmNyZWF0ZShpbml0LnZtLCBpdGVyYXRvckhlbHBlcnNQZXJmb3JtSXRlcmF0aW9uQ29kZUdl
bmVyYXRvcihpbml0LnZtKSwgaW5pdC5vd25lcikpOworICAgICAgICAgICAgaW5pdC5zZXQoSlNG
dW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGl0ZXJhdG9ySGVscGVyc1BlcmZvcm1JdGVyYXRpb25D
b2RlR2VuZXJhdG9yKGluaXQudm0pLnZhbHVlKCksIGluaXQub3duZXIpKTsKICAgICAgICAgfSk7
CiAKICAgICBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24uaW5pdExhdGVyKAogICAgICAgICBbXSAo
Y29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKLSAgICAgICAgICAgIGluaXQu
c2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBwcm9taXNlQ29uc3RydWN0b3JSZXNvbHZl
Q29kZUdlbmVyYXRvcihpbml0LnZtKSwgaW5pdC5vd25lcikpOworICAgICAgICAgICAgaW5pdC5z
ZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIHByb21pc2VDb25zdHJ1Y3RvclJlc29sdmVD
b2RlR2VuZXJhdG9yKGluaXQudm0pLnZhbHVlKCksIGluaXQub3duZXIpKTsKICAgICAgICAgfSk7
CiAKLSAgICBtX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHByb21pc2VPcGVyYXRpb25zTmV3UHJvbWlzZUNhcGFiaWxpdHlD
b2RlR2VuZXJhdG9yKHZtKSwgdGhpcykpOworICAgIG1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5j
dGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgcHJvbWlzZU9wZXJhdGlv
bnNOZXdQcm9taXNlQ2FwYWJpbGl0eUNvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIHRoaXMpKTsK
ICAgICBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uLnNldCh2bSwgdGhp
cywgaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7CiAgICAgbV90aHJvd1R5cGVFcnJvckdldHRl
clNldHRlci5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxHZXR0ZXJT
ZXR0ZXI+JiBpbml0KSB7CkBAIC00OTEsNyArNDkxLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
aW5pdChWTSYgdm0pCiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+aW5pdFJlc3RyaWN0ZWRQcm9w
ZXJ0aWVzKGV4ZWMsIHRoaXMpOwogCiAgICAgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLnNldCh2bSwg
dGhpcywgR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIHRoaXMpKTsKLSAgICBtX3NwZWNpZXNHZXR0
ZXJTZXR0ZXItPnNldEdldHRlcih2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9i
YWxPcGVyYXRpb25zU3BlY2llc0dldHRlckNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSk7CisgICAg
bV9zcGVjaWVzR2V0dGVyU2V0dGVyLT5zZXRHZXR0ZXIodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZ2xvYmFsT3BlcmF0aW9uc1NwZWNpZXNHZXR0ZXJDb2RlR2VuZXJhdG9yKHZtKS52
YWx1ZSgpLCB0aGlzKSk7CiAKICAgICBtX3R5cGVkQXJyYXlQcm90by5pbml0TGF0ZXIoCiAgICAg
ICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlPiYgaW5p
dCkgewpAQCAtNTEzLDcgKzUxMyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZt
KQogICAgICAgICBbXSAoTGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXplciYgaW5pdCkgeyBc
CiAgICAgICAgICAgICBpbml0LnNldFByb3RvdHlwZShKUyAjIyB0eXBlICMjIEFycmF5UHJvdG90
eXBlOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIEpTICMjIHR5cGUgIyMgQXJyYXlQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwt
Pm1fdHlwZWRBcnJheVByb3RvLmdldChpbml0Lmdsb2JhbCkpKSk7IFwKICAgICAgICAgICAgIGlu
aXQuc2V0U3RydWN0dXJlKEpTICMjIHR5cGUgIyMgQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZShpbml0
LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5wcm90b3R5cGUpKTsgXAotICAgICAgICAgICAgaW5pdC5z
ZXRDb25zdHJ1Y3RvcihKUyAjIyB0eXBlICMjIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZShpbml0
LnZtLCBpbml0Lmdsb2JhbCwgSlMgIyMgdHlwZSAjIyBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGluaXQuZ2xvYmFsLT5tX3R5cGVkQXJyYXlT
dXBlckNvbnN0cnVjdG9yLmdldChpbml0Lmdsb2JhbCkpLCBpbml0LnByb3RvdHlwZSwgQVNDSUlM
aXRlcmFsKCN0eXBlICJBcnJheSIpLCB0eXBlZEFycmF5Q29uc3RydWN0b3JBbGxvY2F0ZSAjIyB0
eXBlICMjIEFycmF5Q29kZUdlbmVyYXRvcihpbml0LnZtKSkpOyBcCisgICAgICAgICAgICBpbml0
LnNldENvbnN0cnVjdG9yKEpTICMjIHR5cGUgIyMgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGlu
aXQudm0sIGluaXQuZ2xvYmFsLCBKUyAjIyB0eXBlICMjIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm1fdHlwZWRBcnJh
eVN1cGVyQ29uc3RydWN0b3IuZ2V0KGluaXQuZ2xvYmFsKSksIGluaXQucHJvdG90eXBlLCBBU0NJ
SUxpdGVyYWwoI3R5cGUgIkFycmF5IiksIHR5cGVkQXJyYXlDb25zdHJ1Y3RvckFsbG9jYXRlICMj
IHR5cGUgIyMgQXJyYXlDb2RlR2VuZXJhdG9yKGluaXQudm0pLnZhbHVlKCkpKTsgXAogICAgICAg
ICAgICAgaW5pdC5nbG9iYWwtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGluaXQudm0sIGlu
aXQudm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudHlwZSAjIyBBcnJheVByaXZhdGVO
YW1lKCksIGluaXQuY29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsgXAogICAgICAgICB9KTsKICAgICBGT1JfRUFDSF9UWVBFRF9B
UlJBWV9UWVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoSU5JVF9UWVBFRF9BUlJBWV9MQVRFUikKQEAg
LTgzNyw3ICs4MzcsNyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAgIEpTT2JqZWN0KiBy
ZWdFeHBTeW1ib2xSZXBsYWNlID0gYXNPYmplY3QobV9yZWdFeHBQcm90b3R5cGUtPmdldERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cmVwbGFjZVN5bWJvbCkuYXNDZWxsKCkpOwogICAgIG1f
cmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlLnNldCh2bSwgdGhpcywgcmVnRXhwU3ltYm9sUmVwbGFj
ZSk7CiAKLSNkZWZpbmUgQ1JFQVRFX1BSSVZBVEVfR0xPQkFMX0ZVTkNUSU9OKG5hbWUsIGNvZGUp
IEpTRnVuY3Rpb24qIG5hbWUgIyMgUHJpdmF0ZUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBjb2RlICMjIENvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKTsKKyNkZWZpbmUgQ1JFQVRFX1BS
SVZBVEVfR0xPQkFMX0ZVTkNUSU9OKG5hbWUsIGNvZGUpIEpTRnVuY3Rpb24qIG5hbWUgIyMgUHJp
dmF0ZUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjb2RlICMjIENvZGVHZW5lcmF0
b3Iodm0pLnZhbHVlKCksIHRoaXMpOwogICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05f
UFJJVkFURV9HTE9CQUxfTkFNRShDUkVBVEVfUFJJVkFURV9HTE9CQUxfRlVOQ1RJT04pCiAjdW5k
ZWYgQ1JFQVRFX1BSSVZBVEVfR0xPQkFMX0ZVTkNUSU9OCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCAyNTI1OTEzZGYzNzMzMWY1N2E3YjUyNWM2ZjAx
MjA4MDVhN2VmY2QyLi44YmU2M2NkZTY5ZGIyM2IxNjg5OTZlOWRhMTQyMDI1ZWYzMDY1NWFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0yMDM0LDEy
ICsyMDM0LDE1IEBAIGJvb2wgSlNPYmplY3Q6OmdldFByaW1pdGl2ZU51bWJlcihFeGVjU3RhdGUq
IGV4ZWMsIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJiByZXN1CiAgICAgcmV0dXJuICFyZXN1bHQu
aXNTdHJpbmcoKTsKIH0KIAotYm9vbCBKU09iamVjdDo6Z2V0T3duU3RhdGljUHJvcGVydHlTbG90
KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQor
Ym9vbCBKU09iamVjdDo6Z2V0T3duU3RhdGljUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIGZvciAoYXV0byogaW5mbyA9IGNsYXNzSW5mbyh2bSk7IGluZm87IGluZm8gPSBp
bmZvLT5wYXJlbnRDbGFzcykgewogICAgICAgICBpZiAoYXV0byogdGFibGUgPSBpbmZvLT5zdGF0
aWNQcm9wSGFzaFRhYmxlKSB7Ci0gICAgICAgICAgICBpZiAoZ2V0U3RhdGljUHJvcGVydHlTbG90
RnJvbVRhYmxlKHZtLCB0YWJsZS0+Y2xhc3NGb3JUaGlzLCAqdGFibGUsIHRoaXMsIHByb3BlcnR5
TmFtZSwgc2xvdCkpCisgICAgICAgICAgICBpZiAoZ2V0U3RhdGljUHJvcGVydHlTbG90RnJvbVRh
YmxlKGV4ZWMsIHRhYmxlLT5jbGFzc0ZvclRoaXMsICp0YWJsZSwgdGhpcywgcHJvcGVydHlOYW1l
LCBzbG90KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1
cm4gZmFsc2U7CkBAIC0yMzI1LDYgKzIzMjgsNyBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeUFsbFN0
YXRpY1Byb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEFTU0VSVCghc3RhdGljUHJv
cGVydGllc1JlaWZpZWQoKSk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyBJZiB0aGlzIG9iamVjdCdz
IENsYXNzSW5mbyBoYXMgbm8gc3RhdGljIHByb3BlcnRpZXMsIHRoZW4gbm90aGluZyB0byByZWlm
eSEKICAgICAvLyBXZSBjYW4gc2FmZWx5IHNldCB0aGUgZmxhZyB0byBhdm9pZCB0aGUgZXhwZW5z
aXZlIGNoZWNrIGFnYWluIGluIHRoZSBmdXR1cmUuCkBAIC0yMzQ1LDggKzIzNDksMTAgQEAgdm9p
ZCBKU09iamVjdDo6cmVpZnlBbGxTdGF0aWNQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgICAgICBhdXRvIGtleSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCB2YWx1ZS5tX2tleSk7CiAgICAgICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQgPSBnZXREaXJlY3RPZmZzZXQodm0sIGtleSwgYXR0cmlidXRlcyk7
Ci0gICAgICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKLSAgICAgICAgICAgICAg
ICByZWlmeVN0YXRpY1Byb3BlcnR5KHZtLCBoYXNoVGFibGUtPmNsYXNzRm9yVGhpcywga2V5LCB2
YWx1ZSwgKnRoaXMpOworICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsK
KyAgICAgICAgICAgICAgICByZWlmeVN0YXRpY1Byb3BlcnR5KHZtLCBoYXNoVGFibGUtPmNsYXNz
Rm9yVGhpcywga2V5LCB2YWx1ZSwgKnRoaXMsIGV4ZWMpOworICAgICAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDU5
MGJhMWQ5Mjk5MzQ5ZmJlMDMyOTY0ODA5NDBiODQzNGNlMWZkMTEuLmIwOGE3ZTQ3NTJiMzY3Nzll
MWI2ZDhiOTdiOWVmM2JjYTlkMDcwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaApAQCAtOTQsNyArOTQsNyBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0Nl
bGwgewogICAgIGZyaWVuZCBjbGFzcyBKU0NlbGw7CiAgICAgZnJpZW5kIGNsYXNzIEpTRmluYWxP
YmplY3Q7CiAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwotICAgIEpTX0VYUE9SVF9QUklW
QVRFIGZyaWVuZCBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KFZNJiwgY29uc3QgSGFzaFRh
YmxlVmFsdWUqLCBKU09iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgZnJpZW5kIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhl
Y1N0YXRlKiwgY29uc3QgSGFzaFRhYmxlVmFsdWUqLCBKU09iamVjdCosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7CiAKICAgICBlbnVtIFB1dE1vZGUgewogICAgICAgICBQdXRNb2RlUHV0
LApAQCAtMTAyNywxMSArMTAyNywxMSBAQCBwcml2YXRlOgogICAgIEpTX0VYUE9SVF9QUklWQVRF
IE5FVkVSX0lOTElORSBib29sIHB1dElubGluZVNsb3coRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIGJvb2wgZ2V0Tm9uSW5kZXhQcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBi
b29sIGdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBib29sIGdldE93bk5vbkluZGV4UHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaWxsR2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5
U2xvdCYsIEpTQ2VsbCosIHVuc2lnbmVkLCBQcm9wZXJ0eU9mZnNldCk7CiAgICAgdm9pZCBmaWxs
Q3VzdG9tR2V0dGVyUHJvcGVydHlTbG90KFZNJiwgUHJvcGVydHlTbG90JiwgQ3VzdG9tR2V0dGVy
U2V0dGVyKiwgdW5zaWduZWQsIFN0cnVjdHVyZSopOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBnZXRPd25TdGF0aWNQcm9wZXJ0eVNsb3QoVk0mLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0T3duU3RhdGljUHJvcGVydHlT
bG90KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RydWN0
IFByb3BlcnR5SGFzaEVudHJ5IHsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiB0YWJsZTsKICAg
ICAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIHZhbHVlOwpAQCAtMTM0MywxNCArMTM0MywxNSBA
QCBpbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0UHJvdG90eXBlKFZNJiB2bSwgRXhlY1N0YXRl
KiBleGVjKQogCiAvLyBJdCBpcyBzYWZlIHRvIGNhbGwgdGhpcyBtZXRob2Qgd2l0aCBhIFByb3Bl
cnR5TmFtZSB0aGF0IGlzIGFjdHVhbGx5IGFuIGluZGV4LAogLy8gYnV0IGlmIHNvIHdpbGwgYWx3
YXlzIHJldHVybiBmYWxzZSAoZG9lc24ndCBzZWFyY2ggaW5kZXggc3RvcmFnZSkuCi1BTFdBWVNf
SU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKK0FMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsK
ICAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewogICAgICAgICBpZiAoIVR5cGVJbmZv
OjpoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlKGlubGluZVR5cGVGbGFncygpKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIGdldE93blN0YXRpY1Byb3BlcnR5U2xvdCh2
bSwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgcmV0dXJuIGdldE93blN0YXRpY1Byb3Bl
cnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICAKICAgICAvLyBn
ZXRQcm9wZXJ0eVNsb3QgcmVsaWVzIG9uIHRoaXMgbWV0aG9kIG5ldmVyIHJldHVybmluZyBpbmRl
eCBwcm9wZXJ0aWVzIQpAQCAtMTQwMCwxOSArMTQwMSwyMiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQg
SlNPYmplY3Q6OmZpbGxDdXN0b21HZXR0ZXJQcm9wZXJ0eVNsb3QoVk0mIHZtLCBQcm9wZXJ0eVNs
b3QmCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IG9iamVjdC0+c3RydWN0dXJlKHZtKTsKLSAgICBpZiAob2JqZWN0LT5nZXRPd25Ob25J
bmRleFByb3BlcnR5U2xvdCh2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQorICAg
IGlmIChvYmplY3QtPmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KGV4ZWMsIHN0cnVjdHVyZSwg
cHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90
PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIGdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBleGVjLCBpbmRleC52YWx1ZSgpLCBzbG90KTsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIC8vIEl0IG1heSBzZWVtIGNyYXp5IHRvIGlubGluZSBh
IGZ1bmN0aW9uIHRoaXMgbGFyZ2UgYnV0IGl0IG1ha2VzIGEgYmlnIGRpZmZlcmVuY2UKLS8vIHNp
bmNlIHRoaXMgaXMgZnVuY3Rpb24gdmVyeSBob3QgaW4gdmFyaWFibGUgbG9va3VwCisvLyBzaW5j
ZSB0aGlzIGZ1bmN0aW9uIGlzIHZlcnkgaG90IGluIHZhcmlhYmxlIGxvb2t1cAogQUxXQVlTX0lO
TElORSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgYXV0byYgc3RydWN0dXJlSURUYWJsZSA9IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgp
OwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0aGlzOwogICAgIHdoaWxlICh0cnVlKSB7CkBAIC0x
NDI5LDggKzE0MzMsOSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5
U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZQogICAgICAgICB9CiAgICAg
ICAgIEFTU0VSVChvYmplY3QtPnR5cGUoKSAhPSBQcm94eU9iamVjdFR5cGUpOwogICAgICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0cnVjdHVyZUlEVGFibGUuZ2V0KG9iamVjdC0+c3RydWN0
dXJlSUQoKSk7Ci0gICAgICAgIGlmIChvYmplY3QtPmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90
KHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgICAgIGlmIChvYmplY3Qt
PmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KGV4ZWMsIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1l
LCBzbG90KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgbG9v
ayBsaWtlIGl0J3MgZm9sbG93aW5nIHRoZSBzcGVjaWZpY2F0aW9uOgogICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNTcyCiAgICAgICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUob2JqZWN0KTsKQEAgLTE2
MzEsNyArMTYzNiw3IEBAIEpTX0VYUE9SVF9QUklWQVRFIE5FVkVSX0lOTElORSBib29sIG9yZGlu
YXJ5U2V0U2xvdyhFeGVjU3RhdGUqLCBKU09iamVjdCosIFByb3BlCiAKICNkZWZpbmUgSlNDX0JV
SUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKGpzTmFtZSwgZ2VuZXJhdG9yTmFtZSwg
YXR0cmlidXRlcykgXAogICAgIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKFwKLSAgICAgICAgdm0sIGdsb2JhbE9iamVjdCwgbWFrZUlkZW50aWZpZXIodm0sIChqc05h
bWUpKSwgKGdlbmVyYXRvck5hbWUpKHZtKSwgKGF0dHJpYnV0ZXMpKQorICAgICAgICB2bSwgZ2xv
YmFsT2JqZWN0LCBtYWtlSWRlbnRpZmllcih2bSwgKGpzTmFtZSkpLCAoZ2VuZXJhdG9yTmFtZSko
dm0pLnZhbHVlKCksIChhdHRyaWJ1dGVzKSkKIAogLy8gSGVscGVyIGZvciBkZWZpbmluZyBuYXRp
dmUgZ2V0dGVycyBvbiBwcm9wZXJ0aWVzLgogI2RlZmluZSBKU0NfTkFUSVZFX0lOVFJJTlNJQ19H
RVRURVIoanNOYW1lLCBjcHBOYW1lLCBhdHRyaWJ1dGVzLCBpbnRyaW5zaWMpICBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCmluZGV4IDg5MmUy
Y2E0NWY5N2RkNmYzMmE2YTBlNjhhMTkyZTI2ZWU1MzE4MGIuLmI0YjU3MGViY2I0MjgxOWI3M2Q2
OWVlZWIwZThlYzIxZWE4NDhhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0SW5saW5lcy5oCkBAIC0xNDAsOCArMTQwLDkgQEAgQUxXQVlTX0lOTElORSBi
b29sIEpTT2JqZWN0OjpnZXROb25JbmRleFByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmEKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IHN0cnVjdHVyZUlEVGFibGUuZ2V0KG9iamVjdC0+c3RydWN0dXJlSUQoKSk7CiAgICAgICAg
IGlmIChMSUtFTFkoIVR5cGVJbmZvOjpvdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0
LT5pbmxpbmVUeXBlRmxhZ3MoKSkpKSB7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5nZXRPd25O
b25JbmRleFByb3BlcnR5U2xvdCh2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQor
ICAgICAgICAgICAgaWYgKG9iamVjdC0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QoZXhlYywg
c3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgYm9vbCBoYXNTbG90ID0gc3RydWN0dXJlLT5jbGFz
c0luZm8oKS0+bWV0aG9kVGFibGUuZ2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAKaW5kZXggNzViMGMxMWYzNmUyNmE3YmE0OTM0
MTU4NTUyNjM4YjgxZTE1ZjFlMi4uODdmZGEzYWY4ZDkzMDM3ZWFjZDJkYTI2ODdlYTI1MDQwNzk2
NmRlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAKQEAgLTMzMCw3ICszMzAsNyBAQCB2b2lkIEpT
VHlwZWRBcnJheVZpZXdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iagogICAgIHRvU3RyaW5nVGFnQWNjZXNzb3ItPnNldEdldHRlcih2bSwg
Z2xvYmFsT2JqZWN0LCB0b1N0cmluZ1RhZ0Z1bmN0aW9uKTsKICAgICBwdXREaXJlY3ROb25JbmRl
eEFjY2Vzc29yKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwgdG9TdHJp
bmdUYWdBY2Nlc3NvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKIAotICAgIEpT
RnVuY3Rpb24qIHZhbHVlc0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0eXBlZEFy
cmF5UHJvdG90eXBlVmFsdWVzQ29kZUdlbmVyYXRvcih2bSksIGdsb2JhbE9iamVjdCk7CisgICAg
SlNGdW5jdGlvbiogdmFsdWVzRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHR5cGVk
QXJyYXlQcm90b3R5cGVWYWx1ZXNDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpLCBnbG9iYWxPYmpl
Y3QpOwogCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUoKSwgdmFsdWVzRnVuY3Rpb24sIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JT
eW1ib2wsIHZhbHVlc0Z1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Mb29rdXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNw
cAppbmRleCA5NjZjNzFlYjEwYThhODQ4NDdlODdjYjYxMjNlNDA4NzUxNzhiZjA2Li4yMmRkYzFm
YWM1MTZiZjRhN2E3Nzg2ZmViYTdmYjJlODkyMzVlODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xvb2t1cC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgdm9pZCByZWlmeVN0YXRpY0Fj
Y2Vzc29yKFZNJiB2bSwgY29uc3QgSGFzaFRhYmxlVmFsdWUmIHZhbHVlLCBKU09iamVjdCYgdGhp
c09iamUKICAgICBpZiAodmFsdWUuYWNjZXNzb3JHZXR0ZXIoKSkgewogICAgICAgICBKU0Z1bmN0
aW9uKiBmdW5jdGlvbiA9IG51bGxwdHI7CiAgICAgICAgIGlmICh2YWx1ZS5hdHRyaWJ1dGVzKCkg
JiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbikKLSAgICAgICAgICAgIGZ1bmN0aW9uID0gSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCB2YWx1ZS5idWlsdGluQWNjZXNzb3JHZXR0ZXJHZW5lcmF0b3Io
KSh2bSksIGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICBmdW5jdGlvbiA9IEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgdmFsdWUuYnVpbHRpbkFjY2Vzc29yR2V0dGVyR2VuZXJhdG9yKCkodm0pLnZh
bHVlKCksIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgU3RyaW5n
IGdldHRlck5hbWUgPSB0cnlNYWtlU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiZ2V0ICIpLCBTdHJpbmco
KnByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpKTsKICAgICAgICAgICAgIGlmICghZ2V0dGVyTmFt
ZSkKQEAgLTQ1LDggKzQ1LDEwIEBAIHZvaWQgcmVpZnlTdGF0aWNBY2Nlc3NvcihWTSYgdm0sIGNv
bnN0IEhhc2hUYWJsZVZhbHVlJiB2YWx1ZSwgSlNPYmplY3QmIHRoaXNPYmplCiAgICAgdGhpc09i
amVjdC5wdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKHZtLCBwcm9wZXJ0eU5hbWUsIGFjY2Vzc29y
LCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHZhbHVlLmF0dHJpYnV0ZXMoKSkpOwogfQogCi1ib29s
IHNldFVwU3RhdGljRnVuY3Rpb25TbG90KFZNJiB2bSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0lu
Zm8sIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgc2V0VXBT
dGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDbGFzc0luZm8qIGNsYXNz
SW5mbywgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5LCBKU09iamVjdCogdGhpc09iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSk7CiAgICAgQVNTRVJU
KGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbk9yRnVuY3Rp
b25PckFjY2Vzc29yT3JMYXp5UHJvcGVydHkpOwogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CkBA
IC01OSw3ICs2MSw4IEBAIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoVk0mIHZtLCBjb25z
dCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgSGFzaFRhYmxlCiAgICAgICAgIGlmICh0aGlz
T2JqZWN0LT5zdGF0aWNQcm9wZXJ0aWVzUmVpZmllZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgICAgIHJlaWZ5U3RhdGljUHJvcGVydHkodm0sIGNsYXNzSW5mbywgcHJvcGVy
dHlOYW1lLCAqZW50cnksICp0aGlzT2JqZWN0KTsKKyAgICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0
eSh2bSwgY2xhc3NJbmZvLCBwcm9wZXJ0eU5hbWUsICplbnRyeSwgKnRoaXNPYmplY3QsIGV4ZWMp
OworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKICAgICAgICAg
b2Zmc2V0ID0gdGhpc09iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMpOwogICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAppbmRleCBiZmVlNTFlMGIxYWNiNDQ2YTM1MDgy
YjQ1YmYwMWU5MzhhNjg4YWY3Li4xYTgwYWNhOWNjOTM3ODBiMzE1NTI5MTNlZDZiMDgwMjcwMzQw
ZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtMzEsMTAgKzMx
LDEyIEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
LmgiCiAjaW5jbHVkZSAiTGF6eVByb3BlcnR5LmgiCisjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIK
ICNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJQdXRQcm9wZXJ0eVNsb3QuaCIK
ICNpbmNsdWRlICJUeXBlRXJyb3IuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2lu
Y2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDcsNyArNDks
NyBAQCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCB7CiAvLyBpZS4gdHlwZWRlZiBKU1ZhbHVlICgq
R2V0RnVuY3Rpb24pKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBiYXNlT2JqZWN0KQogdHlwZWRlZiBQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBHZXRGdW5jdGlvbjsKIHR5cGVkZWYgUHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmMgUHV0RnVuY3Rpb247Ci10eXBlZGVmIEZ1bmN0aW9uRXhlY3V0
YWJsZSogKCpCdWlsdGluR2VuZXJhdG9yKShWTSYpOwordHlwZWRlZiBFeHBlY3RlZDxGdW5jdGlv
bkV4ZWN1dGFibGUqLCBQYXJzZXJFcnJvcj4gKCpCdWlsdGluR2VuZXJhdG9yKShWTSYpOwogdHlw
ZWRlZiBKU1ZhbHVlICgqTGF6eVByb3BlcnR5Q2FsbGJhY2spKFZNJiwgSlNPYmplY3QqKTsKIAog
Ly8gSGFzaCB0YWJsZSBnZW5lcmF0ZWQgYnkgdGhlIGNyZWF0ZV9oYXNoX3RhYmxlIHNjcmlwdC4K
QEAgLTIwMyw3ICsyMDUsNyBAQCBzdHJ1Y3QgSGFzaFRhYmxlIHsKICAgICB9CiB9OwogCi1KU19F
WFBPUlRfUFJJVkFURSBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KFZNJiwgY29uc3QgQ2xh
c3NJbmZvKiwgY29uc3QgSGFzaFRhYmxlVmFsdWUqLCBKU09iamVjdCogdGhpc09iamVjdCwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKK0pTX0VYUE9SVF9QUklWQVRFIGJvb2wgc2V0VXBT
dGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiwgY29uc3QgQ2xhc3NJbmZvKiwgY29uc3QgSGFz
aFRhYmxlVmFsdWUqLCBKU09iamVjdCogdGhpc09iamVjdCwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVpZnlTdGF0aWNBY2Nlc3NvcihWTSYs
IGNvbnN0IEhhc2hUYWJsZVZhbHVlJiwgSlNPYmplY3QmIHRoaXNPYmplY3QsIFByb3BlcnR5TmFt
ZSk7CiAKIGlubGluZSBCdWlsdGluR2VuZXJhdG9yIEhhc2hUYWJsZVZhbHVlOjpidWlsdGluQWNj
ZXNzb3JHZXR0ZXJHZW5lcmF0b3IoKSBjb25zdApAQCAtMjIwLDcgKzIyMiw3IEBAIGlubGluZSBC
dWlsdGluR2VuZXJhdG9yIEhhc2hUYWJsZVZhbHVlOjpidWlsdGluQWNjZXNzb3JTZXR0ZXJHZW5l
cmF0b3IoKSBjb25zdAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEJ1aWx0aW5HZW5lcmF0
b3I+KG1fdmFsdWVzLnZhbHVlMik7CiB9CiAKLWlubGluZSBib29sIGdldFN0YXRpY1Byb3BlcnR5
U2xvdEZyb21UYWJsZShWTSYgdm0sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBjb25zdCBI
YXNoVGFibGUmIHRhYmxlLCBKU09iamVjdCogdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoraW5saW5lIGJvb2wgZ2V0U3RhdGljUHJvcGVy
dHlTbG90RnJvbVRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0lu
Zm8sIGNvbnN0IEhhc2hUYWJsZSYgdGFibGUsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgaWYgKHRoaXNP
YmplY3QtPnN0YXRpY1Byb3BlcnRpZXNSZWlmaWVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTIzMCw3ICsyMzIsNyBAQCBpbmxpbmUgYm9vbCBnZXRTdGF0aWNQcm9wZXJ0eVNsb3RGcm9t
VGFibGUoVk0mIHZtLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgYwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmli
dXRlOjpCdWlsdGluT3JGdW5jdGlvbk9yQWNjZXNzb3JPckxhenlQcm9wZXJ0eSkKLSAgICAgICAg
cmV0dXJuIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KHZtLCBjbGFzc0luZm8sIGVudHJ5LCB0aGlz
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICByZXR1cm4gc2V0VXBTdGF0aWNG
dW5jdGlvblNsb3QoZXhlYywgY2xhc3NJbmZvLCBlbnRyeSwgdGhpc09iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KTsKIAogICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRy
aWJ1dGU6OkNvbnN0YW50SW50ZWdlcikgewogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmpl
Y3QsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoZW50cnktPmF0dHJpYnV0ZXMoKSksIGpzTnVtYmVy
KGVudHJ5LT5jb25zdGFudEludGVnZXIoKSkpOwpAQCAtMzE5LDEzICszMjEsMTkgQEAgaW5saW5l
IGJvb2wgbG9va3VwUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNPYmplY3QqIGJhc2UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW5saW5lIHZvaWQgcmVp
ZnlTdGF0aWNQcm9wZXJ0eShWTSYgdm0sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBjb25z
dCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgY29uc3QgSGFzaFRhYmxlVmFsdWUmIHZhbHVl
LCBKU09iamVjdCYgdGhpc09iaikKK2lubGluZSB2b2lkIHJlaWZ5U3RhdGljUHJvcGVydHkoVk0m
IHZtLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9w
ZXJ0eU5hbWUsIGNvbnN0IEhhc2hUYWJsZVZhbHVlJiB2YWx1ZSwgSlNPYmplY3QmIHRoaXNPYmos
IEV4ZWNTdGF0ZSogZXhlYyA9IG51bGxwdHIpCiB7CisgICAgQVNTRVJUKCZ2bSA9PSAmKGV4ZWMt
PnZtKCkpKTsKICAgICBpZiAodmFsdWUuYXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6
OkJ1aWx0aW4pIHsKICAgICAgICAgaWYgKHZhbHVlLmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0
cmlidXRlOjpBY2Nlc3NvcikKICAgICAgICAgICAgIHJlaWZ5U3RhdGljQWNjZXNzb3Iodm0sIHZh
bHVlLCB0aGlzT2JqLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0
aGlzT2JqLnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2bSwgdGhpc09iai5nbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCB2YWx1ZS5idWlsdGluR2VuZXJhdG9yKCkodm0pLCBhdHRyaWJ1dGVz
Rm9yU3RydWN0dXJlKHZhbHVlLmF0dHJpYnV0ZXMoKSkpOworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIEV4cGVjdGVkPEZ1bmN0aW9uRXhlY3V0YWJsZSosIFBhcnNlckVycm9yPiBmID0gdmFs
dWUuYnVpbHRpbkdlbmVyYXRvcigpKHZtKTsKKyAgICAgICAgICAgIGlmIChmLmhhc192YWx1ZSgp
KQorICAgICAgICAgICAgICAgIHRoaXNPYmoucHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKHZtLCB0
aGlzT2JqLmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGYudmFsdWUoKSwgYXR0cmlidXRl
c0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1dGVzKCkpKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBmLmVycm9yKCkudGhyb3dTdGFja092ZXJmbG93T3JPdXRPZk1lbW9yeShl
eGVjKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAppbmRleCA1MzU2OGI3YTNhYWU0
YjEyNmNjZTMzOWQzMmQwNDcwZWVhNzZhMTgzLi5mZTJiNmJlZTEzMjBjYjI1NTdhN2RlNTMyZmZk
OTgwNGRiMzI1ZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFBy
b3RvdHlwZS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBNYXBQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFU
SVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuZ2V0UHJpdmF0ZU5hbWUoKSwgbWFwUHJvdG9GdW5jR2V0LCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgSlNNYXBH
ZXRJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zZXRQcml2YXRlTmFt
ZSgpLCBtYXBQcm90b0Z1bmNTZXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCAyLCBKU01hcFNldEludHJpbnNpYyk7CiAKLSAgICBKU0Z1bmN0aW9u
KiBlbnRyaWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBtYXBQcm90b3R5cGVFbnRyaWVzQ29k
ZUdlbmVyYXRvcih2bSksIGdsb2JhbE9iamVjdCk7CisgICAgSlNGdW5jdGlvbiogZW50cmllcyA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgbWFwUHJvdG90eXBlRW50cmllc0NvZGVHZW5lcmF0b3Io
dm0pLnZhbHVlKCksIGdsb2JhbE9iamVjdCk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1l
KCksIGVudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+aXRlcmF0b3JTeW1ib2wsIGVudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKCZ2bSwg
Ik1hcCIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlw
ZS5jcHAKaW5kZXggMjkzNDM5NjA4N2U2OGJmMzhjOTE4NzMxODA0ZjZmNmU3MGIwN2Q2Yy4uZjJm
MDVlM2ZmMGZlNGMzYWI5ZjJjYjZiZTA1MjlhNDQwYzJmZDg0MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZv
aWQgU2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmhhc1ByaXZhdGVOYW1l
KCksIHNldFByb3RvRnVuY0hhcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIDEsIEpTU2V0SGFzSW50cmluc2ljKTsKICAgICBKU0NfTkFUSVZFX0lO
VFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuYWRkUHJpdmF0ZU5hbWUoKSwgc2V0UHJvdG9GdW5jQWRkLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgSlNTZXRBZGRJbnRy
aW5zaWMpOwogCi0gICAgSlNGdW5jdGlvbiogdmFsdWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCBzZXRQcm90b3R5cGVWYWx1ZXNDb2RlR2VuZXJhdG9yKHZtKSwgZ2xvYmFsT2JqZWN0KTsKKyAg
ICBKU0Z1bmN0aW9uKiB2YWx1ZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHNldFByb3RvdHlw
ZVZhbHVlc0NvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIGdsb2JhbE9iamVjdCk7CiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLnZhbHVlc1B1YmxpY05hbWUoKSwgdmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQdWJsaWNOYW1lKCks
IHZhbHVlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5pdGVyYXRvclN5bWJvbCwgdmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xs
YXJWTS5jcHAKaW5kZXggNzdmNjAzOTVjZjZhOTQyNmMxNjYwYmUwZWI4MDFlZjY2Y2FjNzRiZS4u
MzZkYmQ0ZjI2YzQwZGJkYzEwZDdlMzkxNGZlYjA3YjkyNDM1YjIwZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTRG9sbGFyVk0uaCIKIAotI2luY2x1ZGUgIkJ1aWx0
aW5FeGVjdXRhYmxlQ3JlYXRvci5oIgorI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgog
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRPTUF0dHJpYnV0ZUdldHRlclNldHRl
ci5oIgogI2luY2x1ZGUgIkRPTUpJVEdldHRlclNldHRlci5oIgpAQCAtMTUyMiw5ICsxNTIyLDgg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVCdWls
dGluKEV4ZWNTdGF0ZSogZXhlYykKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAogICAgIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSA9IG1ha2VTb3Vy
Y2UoZnVuY3Rpb25UZXh0LCB7IH0pOwotICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKHZtLCBzb3VyY2UsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnZtLCAiZm9vIiksIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgQ29uc3Ry
dWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0KS0+bGluayh2bSwgc291cmNlKSwgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZnVuYyk7
CisgICAgYXV0byB1bmxpbmtlZCA9IEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJs
ZU9yQ3Jhc2godm0sIHNvdXJjZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJmb28iKSwg
Q29uc3RydWN0b3JLaW5kOjpOb25lLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Qp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB1bmxp
bmtlZC0+bGluayh2bSwgc291cmNlKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7CiB9
CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlUm9v
dChFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKaW5k
ZXggY2E5N2U5NjExZDAzMjJiNjUyZGNjZTRmNmVmOThlNDhhMmQ3MzM2ZC4uMTRjMmJjZGU2OTI1
N2JhYzI0MTZkYmU3YTNjM2FkNmJkM2JkYmIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3Ry
dWN0b3JzLmNwcApAQCAtMTI0LDI3ICsxMjQsMjcgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0lu
Zm8gSlNCdWlsdGluUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdFByaXZhdGVDb25zdHJ1Y3RvcjoK
IAogdGVtcGxhdGU8PiBGdW5jdGlvbkV4ZWN1dGFibGUqIEpTQnVpbHRpblJlYWRhYmxlU3RyZWFt
RGVmYXVsdFJlYWRlclByaXZhdGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUoSlND
OjpWTSYgdm0pCiB7Ci0gICAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzUHJpdmF0ZUlu
aXRpYWxpemVSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXJDb2RlR2VuZXJhdG9yKHZtKTsKKyAg
ICByZXR1cm4gcmVhZGFibGVTdHJlYW1JbnRlcm5hbHNQcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxl
U3RyZWFtRGVmYXVsdFJlYWRlckNvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCk7CiB9CiAKIHRlbXBs
YXRlPD4gRnVuY3Rpb25FeGVjdXRhYmxlKiBKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbURlZmF1bHRD
b250cm9sbGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZShKU0M6OlZN
JiB2bSkKIHsKLSAgICByZXR1cm4gcmVhZGFibGVTdHJlYW1JbnRlcm5hbHNQcml2YXRlSW5pdGlh
bGl6ZVJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJDb2RlR2VuZXJhdG9yKHZtKTsKKyAg
ICByZXR1cm4gcmVhZGFibGVTdHJlYW1JbnRlcm5hbHNQcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxl
U3RyZWFtRGVmYXVsdENvbnRyb2xsZXJDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpOwogfQogCiB0
ZW1wbGF0ZTw+IEZ1bmN0aW9uRXhlY3V0YWJsZSogSlNCdWlsdGluUmVhZGFibGVCeXRlU3RyZWFt
Q29udHJvbGxlclByaXZhdGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUoSlNDOjpW
TSYgdm0pCiB7Ci0gICAgcmV0dXJuIHJlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFsc1ByaXZhdGVJ
bml0aWFsaXplUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlckNvZGVHZW5lcmF0b3Iodm0pOwor
ICAgIHJldHVybiByZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNQcml2YXRlSW5pdGlhbGl6ZVJl
YWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXJDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpOwogfQog
CiB0ZW1wbGF0ZTw+IEZ1bmN0aW9uRXhlY3V0YWJsZSogSlNCdWlsdGluUmVhZGFibGVTdHJlYW1C
WU9CUmVhZGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZShKU0M6OlZN
JiB2bSkKIHsKLSAgICByZXR1cm4gcmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzUHJpdmF0ZUlu
aXRpYWxpemVSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXJDb2RlR2VuZXJhdG9yKHZtKTsKKyAgICBy
ZXR1cm4gcmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzUHJpdmF0ZUluaXRpYWxpemVSZWFkYWJs
ZVN0cmVhbUJZT0JSZWFkZXJDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpOwogfQogCiB0ZW1wbGF0
ZTw+IEZ1bmN0aW9uRXhlY3V0YWJsZSogSlNCdWlsdGluUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVz
dFByaXZhdGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUoSlNDOjpWTSYgdm0pCiB7
Ci0gICAgcmV0dXJuIHJlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFsc1ByaXZhdGVJbml0aWFsaXpl
UmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdENvZGVHZW5lcmF0b3Iodm0pOworICAgIHJldHVybiBy
ZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNQcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFt
QllPQlJlcXVlc3RDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpOwogfQogCiBKU09iamVjdCogY3Jl
YXRlUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyUHJpdmF0ZUNvbnN0cnVjdG9yKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggYzRmNTEyOGQxMDhmYzc0
YjhmYjQ1MWViY2NlM2U4ODNlYWQyZjdkMS4uNjNiMDU5M2NiMzgzYWVhNjUzOTRjZTlhOGEzZTJj
ZWRhZGY2MTBmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KQEAgLTcxNzMsNyArNzE3Myw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0
cnVjdG9ySGVscGVyTWV0aG9kcwogICAgIGlmIChJc0pTQnVpbHRpbkNvbnN0cnVjdG9yKCRpbnRl
cmZhY2UpKSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInRlbXBsYXRlPD4gRnVuY3Rp
b25FeGVjdXRhYmxlKiAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6aW5pdGlhbGl6ZUV4ZWN1dGFi
bGUoVk0mIHZtKVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwotICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuICIgLiBHZXRKU0J1aWx0aW5GdW5j
dGlvbk5hbWVGcm9tU3RyaW5nKCRpbnRlcmZhY2UtPnR5cGUtPm5hbWUsICJpbml0aWFsaXplIiAu
ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUpIC4gIih2bSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIHJldHVybiAiIC4gR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lRnJvbVN0
cmluZygkaW50ZXJmYWNlLT50eXBlLT5uYW1lLCAiaW5pdGlhbGl6ZSIgLiAkaW50ZXJmYWNlLT50
eXBlLT5uYW1lKSAuICIodm0pLnZhbHVlKCk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAifVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIlxuIik7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAy
MzE3NzIxMWQ4ZTZiOGQyMzBhNTRkYmVkNzM4MGZmODE5YTZmMjkxLi5hZmQ2ZDdlYjQ2YTk4MjVl
MjBmZjg0MTQzN2I5ODZiYThjMmM5MTFhIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTAzLTI5ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQSBzdGFjayBvdmVy
ZmxvdyBpbiB0aGUgcGFyc2luZyBvZiBhIGJ1aWx0aW4gKGNhbGxlZCBieSBjcmVhdGVFeGVjdXRh
YmxlKSBjYXVzZSBhIGNyYXNoIGluc3RlYWQgb2YgYSBjYXRjaGFibGUganMgZXhjZXB0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQwNzQKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM3MTY1ODk3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL3N0YWNrLW92ZXJmbG93LXdoaWxlLXBh
cnNpbmctYnVpbHRpbi5qczogQWRkZWQuCisgICAgICAgIChmKToKKwogMjAxOC0wMy0yOCAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIGFwcGVuZFF1b3Rl
ZEpTT05TdHJpbmcgc3RvcHMgb24gYXJpdGhtZXRpYyBvdmVyZmxvdyBpbnN0ZWFkIG9mIHByb3Bh
Z2F0aW5nIGl0IHVwd2FyZHMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3N0YWNrLW92ZXJm
bG93LXdoaWxlLXBhcnNpbmctYnVpbHRpbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3N0YWNrLW92ZXJm
bG93LXdoaWxlLXBhcnNpbmctYnVpbHRpbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjk5YTE3MmY0M2ViN2U2
MjY3ZDUxY2M2ZGU5MWI2NWE4Y2Y2ZDYxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3Mvc3RhY2stb3ZlcmZsb3ctd2hpbGUtcGFyc2luZy1idWlsdGluLmpzCkBAIC0wLDAgKzEsMTEg
QEAKK2Z1bmN0aW9uIGYoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgZigpOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIE1hcC5wcm90b3R5cGUuZm9yRWFjaC5j
YWxsKCcnLCB7fSk7CisgICAgICAgIH0gY2F0Y2gge30KKyAgICB9Cit9CisKK2YoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336771</attachid>
            <date>2018-03-29 08:03:41 -0700</date>
            <delta_ts>2018-03-29 08:41:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184074-20180329170339.patch</filename>
            <type>text/plain</type>
            <size>79258</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
OGEwYzhmOGE5MjVlZjVlYmY4YWIxNDUzMTU1Zjc3MmZjNzJmMzVkLi5iMDk2ZmQ5YmU3ZDE0Nzc4
NTY5YmQ2OTQ4MjMxZDcwODM5ZjQwMmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NCBAQAorMjAxOC0wMy0yOSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUu
Y29tPgorCisgICAgICAgIEEgc3RhY2sgb3ZlcmZsb3cgaW4gdGhlIHBhcnNpbmcgb2YgYSBidWls
dGluIChjYWxsZWQgYnkgY3JlYXRlRXhlY3V0YWJsZSkgY2F1c2UgYSBjcmFzaCBpbnN0ZWFkIG9m
IGEgY2F0Y2hhYmxlIGpzIGV4Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MDc0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNzE2NTg5
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhp
bmcgdGhpcyByZXF1aXJlcyBnZXR0aW5nIHRoZSBQYXJzZXJFcnJvciAod2l0aCBpbmZvcm1hdGlv
biBhYm91dCB0aGUgZmFpbHVyZSkgYW5kIGFuIEV4ZWNTdGF0ZSogKHRvIHRocm93IGFuIGV4Y2Vw
dGlvbikgaW4gdGhlIHNhbWUgcGxhY2UuCisgICAgICAgIEl0IGlzIHN1cnByaXNpbmdseSBwYWlu
ZnVsLCB3aXRoIHF1aXRlIGEgbG9uZyBjYWxsIHN0YWNrIGJldHdlZW4gdGhlIGxhc3QgZnVuY3Rp
b24gd2l0aCBhbiBhY2Nlc3MgdG8gYW4gRXhlY1N0YXRlKiBhbmQgdGhlIGZpcnN0IGZ1bmN0aW9u
IHdpdGggdGhlIFBhcnNlckVycm9yLgorICAgICAgICBFdmVuIHdvcnNlLCBtYW55IG9mIHRoZXNl
IGZ1bmN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IG1hY3JvcywgdGhlbXNlbHZlcyBnZW5lcmF0ZWQg
YnkgYSBtYXplIG9mIHB5dGhvbiBzY3JpcHRzLgorICAgICAgICBBcyBhIHJlc3VsdCwgdGhpcyBw
YXRjaCBpcyBncm90ZXNxdWVseSBsYXJnZSwgd2hpbGUgYWxsIGl0IGRvZXMgaXMgYWRkaW5nIGVu
b3VnaCBwbHVtYmluZyB0byB0aHJvdyBhIHByb3BlciBleGNlcHRpb24gaW4gdGhpcyBzcGVjaWZp
YyBjYXNlLgorCisgICAgICAgIFRoZXJlIGFyZSBub3cgYmFyZSBjYWxscyB0byAnLnZhbHVlKCkn
IG9uIHNldmVyYWwgcGF0aHMgdGhhdCBtYXkgY3Jhc2guIEl0IGlzIG5vdCBhIHByb2JsZW0gaW4g
bXkgb3Bpbmlvbiwgc2luY2Ugd2UgcHJldmlvdXNseSBjcmFzaGVkIGluIGV2ZXJ5IGNhc2UgcmVn
YXJkbGVzcyBvZiB0aGUgcGF0aCB0aGF0IHRvb2sgdXMgdG8gY3JlYXRlRXhlY3V0YWJsZSB3aGVu
IGVuY291bnRlcmluZyBhIHN0YWNrIG92ZXJmbG93LgorICAgICAgICBJZiB3ZSBldmVyIGZpbmQg
YW4gZXhhbXBsZSB0aGF0IGNhbiBjYXVzZSB0aGVzZSBjYWxscyB0byBmYWlsLCBpdCBzaG91bGQg
YmUgZG9hYmxlIHRvIHRocm93IGEgcHJvcGVyIGV4Y2VwdGlvbiB0aGVyZSB0b28uCisKKyAgICAg
ICAgVHdvIG90aGVyIG1pbm9yIGNoYW5nZXM6CisgICAgICAgIC0gSSByZW1vdmVkIEJ1aWx0aW5F
eGVjdXRhYmxlQ3JlYXRvci57Y3BwLCBofSBhcyBpdCB3YXMgbmVhcmx5IGVtcHR5LCBhbmQgb25s
eSB1c2VkIGluIG9uZSBwbGFjZS4gVGhhdCBwbGFjZSBub3cgaW5jbHVkZXMgQnVpbHRpbkV4ZWN1
dGFibGVzLmggZGlyZWN0bHkgaW5zdGVhZC4KKyAgICAgICAgLSBJIG1vdmVkIGNvZGUgZnJvbSBQ
YXJzZXJFcnJvci5oIGludG8gYSBuZXdseSBjcmVhdGVkIFBhcnNlckVycm9yLmNwcCwgYXMgSSBz
ZWUgbm8gbmVlZCB0byBpbmxpbmUgZnVuY3Rpb25zIHRoYXQgYXJlIG9ubHkgdXNlZCB3aGVuIGVu
Y291bnRlcmluZyBhIHBhcnNlciBlcnJvciwgYW5kIFBhcnNlckVycm9yLmggaXMgbm93IGluY2x1
ZGVkIGluIHF1aXRlIGEgZmV3IHBsYWNlcy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWls
dGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHk6CisgICAgICAgIChCdWlsdGluc0NvbWJp
bmVkSGVhZGVyR2VuZXJhdG9yLmdlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKToKKyAgICAg
ICAgKFBhcnNlckVycm9yKToKKyAgICAgICAgKGdlbmVyYXRlX3NlY3Rpb25fZm9yX29iamVjdCk6
IERlbGV0ZWQuCisgICAgICAgIChnZW5lcmF0ZV9leHRlcm5zX2Zvcl9vYmplY3QpOiBEZWxldGVk
LgorICAgICAgICAoZ2VuZXJhdGVfbWFjcm9zX2Zvcl9vYmplY3QpOiBEZWxldGVkLgorICAgICAg
ICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV90YWJsZV9tYWNybyk6IERlbGV0ZWQuCisgICAg
ICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX25hbWVfbWFjcm8pOiBEZWxldGVkLgorICAg
ICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3JfZ2xvYmFsX3ByaXZhdGVfY29kZV9uYW1lX21hY3Jv
KTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRl
X3NlcGFyYXRlX2hlYWRlci5weToKKyAgICAgICAgKGdlbmVyYXRlX3NlY29uZGFyeV9oZWFkZXJf
aW5jbHVkZXMpOgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVz
LnB5OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlQ3JlYXRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVDcmVhdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVh
dGVEZWZhdWx0Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6
OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlQnVpbHRpbkV4
ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1
dGFibGVPckNyYXNoKToKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVF
eGVjdXRhYmxlKToKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaDoKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyRXJyb3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UGFyc2VyRXJyb3I6OnRv
RXJyb3JPYmplY3QpOgorICAgICAgICAoSlNDOjpQYXJzZXJFcnJvcjo6dGhyb3dTdGFja092ZXJm
bG93T3JPdXRPZk1lbW9yeSk6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAg
ICAqIHBhcnNlci9QYXJzZXJFcnJvci5oOgorICAgICAgICAoSlNDOjpQYXJzZXJFcnJvcjo6dG9F
cnJvck9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OkFzeW5jSXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25Qcm90b3R5cGU6OmFkZEZ1bmN0aW9uUHJvcGVydGllcyk6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmdldE93blN0YXRpY1Byb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpyZWlm
eUFsbFN0YXRpY1Byb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXROb25JbmRleFByb3BlcnR5U2xvdCk6
CisgICAgICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvTG9va3VwLmNwcDoKKyAgICAgICAgKEpTQzo6cmVpZnlTdGF0aWNBY2Nl
c3Nvcik6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGljRnVuY3Rpb25TbG90KToKKyAgICAgICAg
KiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNQcm9wZXJ0eVNsb3RG
cm9tVGFibGUpOgorICAgICAgICAoSlNDOjpyZWlmeVN0YXRpY1Byb3BlcnR5KToKKyAgICAgICAg
KiBydW50aW1lL01hcFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcFByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6U2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogdG9v
bHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlQnVpbHRpbik6
CisKIDIwMTgtMDMtMjkgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzAwNjIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWVlMDAyN2MwNmQ0MzkzODI4MDA2ZmUzNjk3YjgwYjc3MDEwY2Q0OC4uMGY1MTY5NzczOWZjN2Yw
YTljNjAxZDJmYjAwMjNhMWY5MmMwZTEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisy
MDE4LTAzLTI5ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAg
ICAgQSBzdGFjayBvdmVyZmxvdyBpbiB0aGUgcGFyc2luZyBvZiBhIGJ1aWx0aW4gKGNhbGxlZCBi
eSBjcmVhdGVFeGVjdXRhYmxlKSBjYXVzZSBhIGNyYXNoIGluc3RlYWQgb2YgYSBjYXRjaGFibGUg
anMgZXhjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODQwNzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM3MTY1ODk3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkgaGFkIHRvIHNsaWdodGx5
IGNoYW5nZSB0aGUgdHlwZSBvZiBzb21lIGJpbmRpbmdzIGJldHdlZW4gSlNDIGFuZCBXZWJDb3Jl
LiBObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCBvbiB0aGUgV2ViQ29yZSBzaWRlLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNCdWlsdGluUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVh
ZGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyUHJpdmF0ZUNv
bnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0J1
aWx0aW5SZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0
aWFsaXplRXhlY3V0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0J1aWx0aW5SZWFkYWJsZVN0
cmVhbUJZT0JSZWFkZXJQcml2YXRlQ29uc3RydWN0b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQnVpbHRpblJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3RQcml2
YXRlQ29uc3RydWN0b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0
b3JIZWxwZXJNZXRob2RzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6
ZUV4ZWN1dGFibGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZSk6CisKIDIwMTgt
MDMtMjkgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzAwNjIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDc1NDhiYWMyMzdmMDI4ODU5MTA1MzFlMjhmMGM0ZDdjOTljYjdhODUuLjk5NDg1
NzRkYTVlYjZkMWQzNjgyODliZDNiOWRjNmQ2NmQ4MjZmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xNjc1LDcgKzE2NzUsNiBAQAogCQlEQ0YzRDU2RDFDRDI5NDc2MDAzRDVD
NjUgLyogTGF6eVByb3BlcnR5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRENGM0Q1NjgxQ0QyOTQ2ODAwM0Q1QzY1IC8qIExhenlQcm9wZXJ0
eUlubGluZXMuaCAqLzsgfTsKIAkJRENGREZCRDkxRDFGNUQ5QjAwRkUzRDcyIC8qIEIzQm90dG9t
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IERDRkRGQkQ3MUQxRjVEOTgwMEZFM0Q3MiAvKiBCM0JvdHRvbVByb3ZpZGVyLmggKi87IH07CiAJ
CURDRkRGQkRBMUQxRjVEOUUwMEZFM0Q3MiAvKiBCM1R5cGVNYXAuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRkRGQkQ4MUQxRjVEOTgwMEZFM0Q3MiAv
KiBCM1R5cGVNYXAuaCAqLzsgfTsKLQkJREUyNkU5MDMxQ0I1REQwNTAwRDJCRTgyIC8qIEJ1aWx0
aW5FeGVjdXRhYmxlQ3JlYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gREUyNkU5MDIxQ0I1REQwNTAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxl
Q3JlYXRvci5oICovOyB9OwogCQlERUE3RTI0NTFCQkM2NzdGMDBENzg0NDAgLyogSlNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTM5MTdFN0MxQjc5MTEwNjAwMEVCRDMzIC8qIEpTVHlwZWRBcnJheVZpZXdQcm90
b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMTI0QThGNzBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjRBOEY1MEU1NTU3NzUwMDMw
OTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUzMTYxODEzMUVDNUZFMTcwMDA2QTIxOCAvKiBET01Bbm5vdGF0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE2
MTgxMDFFQzVGRTA4MDAwNkEyMTggLyogRE9NQW5ub3RhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zMTYyLDYgKzMxNjEsNyBAQAogCQkx
Q0FBOEI0QTBEMzJDMzlBMDA0MUJDRkYgLyogSmF2YVNjcmlwdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDQUE4QjRCMEQzMkMzOUEwMDQxQkNGRiAvKiBKYXZhU2NyaXB0Q29yZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyMEVDQjE1RUZDNTI0NjI0QkMyRjAyRDUgLyogTW9kdWxlTmFtZXNw
YWNlQWNjZXNzQ2FzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
b2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMjIwQzYwQzYyMDZDRUFCRDAwRkM0NjM3IC8qIFBhcnNlckVycm9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBhcnNlckVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MjYwMEI1QTQxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU3RyaW5nSm9pbmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5n
Sm9pbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nSm9pbmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2MkQ4NUI0MUMwRDY1MEYwMDZBQ0I2
MSAvKiBBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcDsgcGF0aCA9
IGIzL2Fpci9BaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNDUxMyw4ICs0NTEzLDYgQEAKIAkJRENGM0Q1NjgxQ0QyOTQ2ODAwM0Q1
QzY1IC8qIExhenlQcm9wZXJ0eUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTGF6eVByb3BlcnR5SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlEQ0ZERkJENzFEMUY1RDk4MDBGRTNENzIgLyogQjNCb3R0b21Qcm92aWRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0JvdHRvbVByb3ZpZGVyLmg7IHBhdGggPSBiMy9C
M0JvdHRvbVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDRkRGQkQ4
MUQxRjVEOTgwMEZFM0Q3MiAvKiBCM1R5cGVNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQjNUeXBlTWFwLmg7IHBhdGggPSBiMy9CM1R5cGVNYXAuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJREUyNkU5MDIxQ0I1REQwNTAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVj
dXRhYmxlQ3JlYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWlsdGlu
RXhlY3V0YWJsZUNyZWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJREUyNkU5
MDYxQ0I1REQ5NjAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdWlsdGluRXhlY3V0YWJsZUNyZWF0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERTVBMDlGRjFCQTNBQzNFMDAzRDQ0
MjQgLyogSW50cmluc2ljRW1pdHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbnRyaW5zaWNFbWl0dGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wYXF1ZUpTU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUxMjRBOEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmlu
Zy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcGFxdWVKU1N0cmlu
Zy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MzY0LDYgKzYzNjIsNyBAQAog
CQkJCTkzRjBCM0FBMDlCQjREQzAwMDY4RkNFMyAvKiBQYXJzZXIuaCAqLywKIAkJCQk5MzA1MkMz
MjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovLAogCQkJCTkzMDUyQzMzMEZC
NzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5oICovLAorCQkJCTIyMEM2MEM2MjA2Q0VBQkQw
MEZDNDYzNyAvKiBQYXJzZXJFcnJvci5jcHAgKi8sCiAJCQkJMEZDQ0FFNDMxNkQwQ0Y2RTAwRDBD
NjVCIC8qIFBhcnNlckVycm9yLmggKi8sCiAJCQkJOUI0OTU0RTgxQTY2NDBEQjAwMjgxNUE2IC8q
IFBhcnNlckZ1bmN0aW9uSW5mby5oICovLAogCQkJCUE3N0YxODI0MTY0MTkyNTQwMDY0MEE0NyAv
KiBQYXJzZXJNb2Rlcy5oICovLApAQCAtNzkxOCw4ICs3OTE3LDYgQEAKIAkJCQk1QjgyNDMwNDFE
QjdBQTQ5MDBFQTYzODQgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcyAqLywKIAkJCQk4QkMw
NjQ4MjFFMTgwQjRBMDBCMkI4Q0EgLyogQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuanMgKi8sCiAJ
CQkJOEJDMDY0OTUxRTFEODM4QjAwQjJCOENBIC8qIEFzeW5jSXRlcmF0b3JQcm90b3R5cGUuanMg
Ki8sCi0JCQkJREUyNkU5MDYxQ0I1REQ5NjAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3Jl
YXRvci5jcHAgKi8sCi0JCQkJREUyNkU5MDIxQ0I1REQwNTAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVj
dXRhYmxlQ3JlYXRvci5oICovLAogCQkJCUE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWls
dGluRXhlY3V0YWJsZXMuY3BwICovLAogCQkJCUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBC
dWlsdGluRXhlY3V0YWJsZXMuaCAqLywKIAkJCQlFMzgwRDY2QjFGMTkyNDlEMDBBNTkwOTUgLyog
QnVpbHRpbk5hbWVzLmNwcCAqLywKQEAgLTgzNTEsNyArODM0OCw2IEBACiAJCQkJOUI0Njk0Mzkx
Rjk3NDM5RTAwQ0NCM0Y5IC8qIEJvb2xlYW5Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk5NkI3MzE5MUJEQTA2ODAwMDMzMUI4NCAvKiBCb29sZWFuUHJvdG90eXBlLmx1dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkVBMDg2MjAxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCBp
biBIZWFkZXJzICovLAotCQkJCURFMjZFOTAzMUNCNUREMDUwMEQyQkU4MiAvKiBCdWlsdGluRXhl
Y3V0YWJsZUNyZWF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2
QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NUVFOUIy
MThBQUI3RTIwMEFBRDA0MyAvKiBCdWlsdGluTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5
REEwMEE2MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGlucy5weSBpbiBIZWFkZXJzICovLApAQCAt
OTA0NCw3ICs5MDQwLDYgQEAKIAkJCQlBNTAzRkExRTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDEzQ0E4QzFC
NDkxQTk0MDBDQUU2MTMgLyogSlNKb2IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE2MEUx
NkY1Q0QwMEIzNDQ2MCAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJN0E5Nzc0QTgyMDZCODJFNDAwOEQwM0QwIC8qIEpTV2Vha1ZhbHVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzE4QzQyMzBFMTZGNUNEMDBCMzQ0NjAgLyogSlNMb2NrLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDMjVENzA5QzE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJBNEJCN0YzMThBNDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1
ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTkxMTYsNiArOTExMSw3IEBACiAJCQkJQTc0
ODJCOTMxMTY3MTE0NzAwM0IwNzEyIC8qIEpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMEIyODZCMUVCOEU2Q0YwMDBFQjVEMiAvKiBKU1dlYWtQcml2YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDlGQjg2ODFBRTMzNUM2MDAzOUQwNjkgLyogSlNXZWFr
U2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QTk3NzRBODIwNkI4MkU0MDA4RDAzRDAgLyogSlNX
ZWFrVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUFENUMzNkVCMUY3NUFENzMwMDBCQ0FBRiAv
KiBKU1dlYkFzc2VtYmx5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDlFODUyRjFFOEEwQzdDMDA4
REUzOUUgLyogSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlF
RkQ0ODQxRUJDMDQ1QzAwRjNERkVBIC8qIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5
cGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaGVhZGVyLnB5IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29t
YmluZWRfaGVhZGVyLnB5CmluZGV4IGNkZTM1N2NkNDM5Y2VhZjQ0NjQyOGU2ODE4ODQ3ODA3M2Mw
M2M0OWQuLjcyMTRjZGFhNTk0M2I4YmNjYWMzM2UyYzA3ZjlmZjNlYzEyNzdkOTQgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVy
YXRlX2NvbWJpbmVkX2hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkKQEAgLTY2LDEy
ICs2NiwxNyBAQCBjbGFzcyBCdWlsdGluc0NvbWJpbmVkSGVhZGVyR2VuZXJhdG9yKEJ1aWx0aW5z
R2VuZXJhdG9yKToKICAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQogCiAgICAg
ZGVmIGdlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKHNlbGYpOgotICAgICAgICByZXR1cm4g
IiIibmFtZXNwYWNlIEpTQyB7CisgICAgICAgIHJldHVybiAiIiIKKyNpbmNsdWRlIDx3dGYvRXhw
ZWN0ZWQuaD4KKworbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBj
bGFzcyBWTTsKK2NsYXNzIFBhcnNlckVycm9yOwogCiBlbnVtIGNsYXNzIENvbnN0cnVjdEFiaWxp
dHkgOiB1bnNpZ25lZDsKLX0iIiIKK30KKyIiIgogCiAgICAgZGVmIGdlbmVyYXRlX3NlY3Rpb25f
Zm9yX29iamVjdChzZWxmLCBvYmplY3QpOgogICAgICAgICBsaW5lcyA9IFtdCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0
ZV9zZXBhcmF0ZV9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWls
dGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkKaW5kZXggNThjOGYyYWM4
YTY0MTVhMjkxY2ZmODg4Y2YxZjY4MGMxZDY2MDQ3ZC4uMTg4OTYyNTliMmYzZWE2YTk2MDRhOWM0
OGUwZTE5NWQwNjhjYmYyYSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3Nl
cGFyYXRlX2hlYWRlci5weQpAQCAtOTIsNiArOTIsMTAgQEAgY2xhc3MgRnVuY3Rpb25FeGVjdXRh
YmxlOwogICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAiYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCIpLAogICAgICAgICAgICAgKSwKIAorICAgICAgICAgICAg
KFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicGFyc2Vy
L1BhcnNlckVycm9yLmgiKSwKKyAgICAgICAgICAgICksCisKICAgICAgICAgICAgIChbIldlYkNv
cmUiXSwKICAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgImJ1aWx0aW5zL0J1aWx0
aW5VdGlscy5oIiksCiAgICAgICAgICAgICApLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5CmluZGV4
IDkwN2E2ZDcxN2M5MTBjYjA3Mjk5NTA5YzYxZGY4NDZhOWM3MDFlZmMuLmQ2ZWFlMGVhYjAwMjlh
ZmNjZjI1MzVhOTYzZmFhM2EwNzRjZDFkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkKQEAg
LTY4LDE0ICs2OCwxNCBAQCBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKICAgICBD
b21iaW5lZEhlYWRlclN0YXRpY01hY3JvcyA9ICgKICAgICAiIiIjZGVmaW5lIERFQ0xBUkVfQlVJ
TFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFy
Z3VtZW50Q291bnQpIFxcCi0gICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNH
ZW5lcmF0b3IoSlNDOjpWTSYpOworICAgIEV4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
KiwgSlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CiAKICR7
bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFU
T1IpCiAjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUiIiIikKIAogICAgIFNlcGFyYXRl
SGVhZGVyU3RhdGljTWFjcm9zID0gKAogICAgICIiIiNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dF
TkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJndW1lbnRD
b3VudCkgXFwKLSAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRv
cihKU0M6OlZNJik7CisgICAgRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6
OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKIAogJHttYWNyb1By
ZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElO
X0dFTkVSQVRPUikKICN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SIiIiKQpAQCAtODMs
OSArODMsMTIgQEAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElO
X0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKICAgICBDb21iaW5lZEpTQ0ltcGxlbWVu
dGF0aW9uU3RhdGljTWFjcm9zID0gKAogICAgICIiIgogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9H
RU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50
Q291bnQpIFxcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihK
U0M6OlZNJiB2bSkgXFwKK0V4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQ
YXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKIHtcXAotICAg
IHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+
bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgc3Rk
OjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFwKKyAgICBhdXRvIGV4cGVjdGVk
VW5saW5rZWQgPSB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUo
KTtcXAorICAgIGlmICghZXhwZWN0ZWRVbmxpbmtlZC5oYXNfdmFsdWUoKSlcXAorICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXhwZWN0ZWRVbmxpbmtlZC5lcnJvcigpKTtcXAorICAgICAg
ICByZXR1cm4gRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVy
cm9yPihleHBlY3RlZFVubGlua2VkLnZhbHVlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRh
YmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJ
bnRyaW5zaWMpKTtcXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUoREVG
SU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpA
QCAtOTQsOSArOTcsMTIgQEAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUoREVG
SU5FX0JVSUxUSU5fR0VORVJBVE9SKQogICAgIFNlcGFyYXRlSlNDSW1wbGVtZW50YXRpb25TdGF0
aWNNYWNyb3MgPSAoCiAgICAgIiIiCiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihj
b2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJndW1lbnRDb3VudCkgXFwK
LUpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZt
KSBcXAorRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9y
PiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAoge1xcCi0gICAgcmV0dXJuIHZt
LmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2
bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQs
IHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAorICAgIGF1dG8gZXhwZWN0ZWRVbmxpbmtlZCA9
IHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpO1xcCisgICAg
aWYgKCFleHBlY3RlZFVubGlua2VkLmhhc192YWx1ZSgpKVxcCisgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChleHBlY3RlZFVubGlua2VkLmVycm9yKCkpO1xcCisgICAgcmV0dXJuIEV4cGVj
dGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4oZXhwZWN0ZWRV
bmxpbmtlZC52YWx1ZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5h
bWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKSk7XFwK
IH0KICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKERF
RklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IK
QEAgLTEwNSwxMCArMTExLDEwIEBAICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNy
b31fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICAgICBDb21iaW5lZFdl
YkNvcmVJbXBsZW1lbnRhdGlvblN0YXRpY01hY3JvcyA9ICgKICAgICAgICAgIiIiCiAjZGVmaW5l
IERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlk
ZGVuTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKLUpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2Rl
TmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAorRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4
ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0m
IHZtKSBcXAoge1xcCiAgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2Fz
dDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcXAotICAgIHJldHVybiBjbGllbnRE
YXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFt
ZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCku
JHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9w
dCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcXAorICAgIHJldHVybiBFeHBlY3RlZDxKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+KGNsaWVudERhdGEtPmJ1aWx0
aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRh
YmxlKCkudmFsdWUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7
b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQs
IHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKSk7IFxcCiB9CiAke21hY3JvUHJlZml4fV9GT1JFQUNI
X0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JV
SUxUSU5fR0VORVJBVE9SCkBAIC0xMTcsMTAgKzEyMywxMCBAQCAke21hY3JvUHJlZml4fV9GT1JF
QUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAgICAgU2VwYXJhdGVX
ZWJDb3JlSW1wbGVtZW50YXRpb25TdGF0aWNNYWNyb3MgPSAoCiAgICAgICAgICIiIgogI2RlZmlu
ZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJp
ZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29k
ZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKK0V4cGVjdGVkPEpTQzo6RnVuY3Rpb25F
eGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZN
JiB2bSkgXFwKIHtcXAogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXFwKLSAgICByZXR1cm4gY2xpZW50
RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5h
bWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygp
LiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxv
cHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXFwKKyAgICByZXR1cm4gRXhwZWN0ZWQ8SlND
OjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPihjbGllbnREYXRhLT5idWls
dGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0
YWJsZSgpLnZhbHVlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4k
e29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0
LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYykpOyBcXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFD
SF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQog
I3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpAQCAtMTM5LDcgKzE0NSw3IEBAIHB1Ymxp
YzoKICAgICB9CiAKICNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVu
Y3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgbGVuZ3RoKSBcXAotICAgIEpTQzo6VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXFwKK0V4cGVjdGVkPEpTQzo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBuYW1lIyNFeGVj
dXRhYmxlKCk7IFxcCiAgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBj
b25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CiAgICAgJHttYWNyb1ByZWZpeH1fRk9S
RUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJM
RVMpCiAjdW5kZWYgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMKQEAgLTE2Miw3ICsxNjgsNyBA
QCBwcml2YXRlOgogfTsKIAogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1l
LCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpIFxcCi1pbmxpbmUgSlNDOjpV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogJHtvYmplY3ROYW1lfUJ1aWx0aW5zV3JhcHBlcjo6
bmFtZSMjRXhlY3V0YWJsZSgpIFxcCitpbmxpbmUgRXhwZWN0ZWQ8SlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+ICR7b2JqZWN0TmFtZX1CdWlsdGluc1dy
YXBwZXI6Om5hbWUjI0V4ZWN1dGFibGUoKSBcXAoge1xcCiAgICAgaWYgKCFtXyMjbmFtZSMjRXhl
Y3V0YWJsZSkge1xcCiAgICAgICAgIEpTQzo6SWRlbnRpZmllciBleGVjdXRhYmxlTmFtZSA9IGZ1
bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpO1xcCkBAIC0xNzAsNyArMTc2LDcgQEAgaW5saW5lIEpT
Qzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqICR7b2JqZWN0TmFtZX1CdWlsdGluc1dyYXBw
ZXI6Om5hbWUjI0V4ZWMKICAgICAgICAgICAgIGV4ZWN1dGFibGVOYW1lID0gSlNDOjpJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZtX3ZtLCBvdmVycmlkZGVuTmFtZSk7XFwKICAgICAgICAgbV8jI25h
bWUjI0V4ZWN1dGFibGUgPSBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZT4oSlNDOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtX3ZtLCBtXyMjbmFtZSMjU291cmNlLCBl
eGVjdXRhYmxlTmFtZSwgc18jI25hbWUjI0NvbnN0cnVjdEFiaWxpdHkpLCB0aGlzLCAmbV8jI25h
bWUjI0V4ZWN1dGFibGUpO1xcCiAgICAgfVxcCi0gICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRh
YmxlLmdldCgpO1xcCisgICAgcmV0dXJuIEV4cGVjdGVkPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPihtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKSk7
XFwKIH0KICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RF
KERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQogI3VuZGVmIERFRklORV9CVUlMVElOX0VYRUNV
VEFCTEVTCkBAIC0yMDIsNyArMjA4LDcgQEAgcHVibGljOgogaW5saW5lIHZvaWQgJHtvYmplY3RO
YW1lfUJ1aWx0aW5GdW5jdGlvbnM6OmluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQogewogI2RlZmluZSBFWFBPUlRfRlVOQ1RJT04oY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwg
b3ZlcnJpZGRlbk5hbWUsIGxlbmd0aClcXAotICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9u
LnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZShtX3ZtLCBj
b2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7CisgICAgbV8jI2Z1bmN0
aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNGdW5jdGlv
bjo6Y3JlYXRlKG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0b3IobV92bSkudmFsdWUoKSwgJmdsb2Jh
bE9iamVjdCkpOwogICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJ
TFRJTl9DT0RFKEVYUE9SVF9GVU5DVElPTikKICN1bmRlZiBFWFBPUlRfRlVOQ1RJT04KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBhYTk2M2Y1Mjc1YzBlZGM4ZTY1NDc5NWViNWE4
OWI5NjcxY2FlNWJjLi40OWY1N2RkYzI1ZjNjMTM2MzcxNmE1YTgxZGE0NGQ4NTE5NWRjYzYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0xNzksNyArMTc5LDYgQEAgYmluZGluZ3Mv
U2NyaXB0T2JqZWN0LmNwcAogYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCiAKIGJ1aWx0aW5zL0J1
aWx0aW5FeGVjdXRhYmxlcy5jcHAKLWJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5j
cHAKIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5jcHAKIAogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAK
QEAgLTY1NCw2ICs2NTMsNyBAQCBwYXJzZXIvTm9kZXMuY3BwCiBwYXJzZXIvTm9kZXNBbmFseXpl
TW9kdWxlLmNwcAogcGFyc2VyL1BhcnNlci5jcHAKIHBhcnNlci9QYXJzZXJBcmVuYS5jcHAKK3Bh
cnNlci9QYXJzZXJFcnJvci5jcHAKIHBhcnNlci9Tb3VyY2VQcm92aWRlci5jcHAKIHBhcnNlci9T
b3VyY2VQcm92aWRlckNhY2hlLmNwcAogcGFyc2VyL1VubGlua2VkU291cmNlQ29kZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJs
ZUNyZWF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlQ3JlYXRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNzllN2U2
ZWY5NWNlMjFjNDQzMjNhNmVhNDFkMzZhMzNmYTM1OTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5oIgotCi0jaW5j
bHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoVk0mIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBDb25zdHJ1Y3Rv
cktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBhYmlsaXR5KQotewotICAgIHJldHVybiBCdWls
dGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUodm0sIHNvdXJjZSwgaWRlbnQsIGtpbmQs
IGFiaWxpdHkpOwotfQotICAgIAotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5YzA4ODRiN2I2MWRmMDgwY2RhYzNhZTVj
YjJkMDZlZTMzNWFlMTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlQ3Jl
YXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQ29u
c3RydWN0QWJpbGl0eS5oIgotI2luY2x1ZGUgIlBhcnNlck1vZGVzLmgiCi0jaW5jbHVkZSAiU291
cmNlQ29kZS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotSlNfRVhQT1JUX1BSSVZBVEUgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKFZNJiwgY29uc3Qg
U291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBDb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVj
dEFiaWxpdHkpOwotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggYWQwZDgzOWFl
MTkxODQwNDkzYzY1ZmM0MjgyZDQ3NTUyMTA3MTZkYy4uZWY2OTk2MDYxMmEyYjliZTg3NGNjZGI4
NjNkZjM5Yzg1ZWM1NDUxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUGFy
c2VyLmgiCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTEsMjUgKzUyLDM0IEBAIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25z
dHJ1Y3RvcihDb25zdHJ1CiAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU6CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpCYXNlOgotICAgICAgICByZXR1cm4g
Y3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBtYWtlU291cmNlKGJhc2VDb25zdHJ1Y3RvckNvZGUsIHsg
fSksIG5hbWUsIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0
KTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUV4ZWN1dGFibGVPckNyYXNoKG1fdm0sIG1ha2VTb3Vy
Y2UoYmFzZUNvbnN0cnVjdG9yQ29kZSwgeyB9KSwgbmFtZSwgY29uc3RydWN0b3JLaW5kLCBDb25z
dHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QpOwogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpF
eHRlbmRzOgotICAgICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBtYWtlU291cmNl
KGRlcml2ZWRDb25zdHJ1Y3RvckNvZGUsIHsgfSksIG5hbWUsIGNvbnN0cnVjdG9yS2luZCwgQ29u
c3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0KTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUV4ZWN1
dGFibGVPckNyYXNoKG1fdm0sIG1ha2VTb3VyY2UoZGVyaXZlZENvbnN0cnVjdG9yQ29kZSwgeyB9
KSwgbmFtZSwgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3Qp
OwogICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShj
b25zdCBTb3VyY2VDb2RlJiBjb2RlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBDb25zdHJ1Y3RB
YmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkpCitFeHBlY3RlZFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoY29uc3QgU291
cmNlQ29kZSYgY29kZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQ29uc3RydWN0QWJpbGl0eSBj
b25zdHJ1Y3RBYmlsaXR5KQogewogICAgIHJldHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIGNv
ZGUsIG5hbWUsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgY29uc3RydWN0QWJpbGl0eSk7CiB9CiAK
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShWTSYg
dm0sIGNvbnN0IFNvdXJjZUNvZGUmIGNvZGUsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIENvbnN0
cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSkKIHsKLSAgICByZXR1cm4gQnVpbHRpbkV4ZWN1
dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKHZtLCBjb2RlLCBuYW1lLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIGNvbnN0cnVjdEFiaWxpdHkpOworICAgIHJldHVybiBCdWlsdGluRXhlY3V0YWJsZXM6
OmNyZWF0ZUV4ZWN1dGFibGVPckNyYXNoKHZtLCBjb2RlLCBuYW1lLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIGNvbnN0cnVjdEFiaWxpdHkpOwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBDb25zdHJ1Y3RvcktpbmQg
Y29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkpCitVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRh
YmxlT3JDcmFzaChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJp
bGl0eSBjb25zdHJ1Y3RBYmlsaXR5KQoreworICAgIGF1dG8gZXhwZWN0ZWQgPSBCdWlsdGluRXhl
Y3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUodm0sIHNvdXJjZSwgbmFtZSwgY29uc3RydWN0b3JL
aW5kLCBjb25zdHJ1Y3RBYmlsaXR5KTsKKyAgICBpZiAoIWV4cGVjdGVkLmhhc192YWx1ZSgpKSB7
CisgICAgICAgIGRhdGFMb2dMbigiRmF0YWwgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW4gZnVuY3Rp
b24gJyIsIG5hbWUuc3RyaW5nKCksICInIik7CisgICAgICAgIENSQVNIKCk7CisgICAgfQorICAg
IHJldHVybiBleHBlY3RlZC52YWx1ZSgpOworfQorCitFeHBlY3RlZFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQ29uc3RydWN0
b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5
KQogewogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7CiAgICAg
UGFyc2VyRXJyb3IgZXJyb3I7CkBAIC04Myw4ICs5Myw4IEBAIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25z
dCBTCiAgICAgICAgICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lLCBjb25zdHJ1Y3RvcktpbmQp
OwogCiAgICAgaWYgKCFwcm9ncmFtKSB7Ci0gICAgICAgIGRhdGFMb2coIkZhdGFsIGVycm9yIGNv
bXBpbGluZyBidWlsdGluIGZ1bmN0aW9uICciLCBuYW1lLnN0cmluZygpLCAiJzogIiwgZXJyb3Iu
bWVzc2FnZSgpKTsKLSAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXJy
b3IuaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1vdmUoZXJy
b3IpKTsKICAgICB9CiAKICAgICBTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gcHJvZ3Jh
bS0+c2luZ2xlU3RhdGVtZW50KCk7CkBAIC0xMDYsNyArMTE2LDcgQEAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0s
IGNvbnN0IFMKICAgICBtZXRhZGF0YS0+b3ZlcnJpZGVOYW1lKG5hbWUpOwogICAgIFZhcmlhYmxl
RW52aXJvbm1lbnQgZHVtbXlURFpWYXJpYWJsZXM7CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
cmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1Bh
cnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIGR1bW15VERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4
dFR5cGU6Ok5vbmUsIFdURk1vdmUocGFyZW50U291cmNlT3ZlcnJpZGUpKTsKLSAgICByZXR1cm4g
ZnVuY3Rpb25FeGVjdXRhYmxlOworICAgIHJldHVybiBFeHBlY3RlZFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKGZ1bmN0aW9uRXhlY3V0YWJsZSk7CiB9CiAKIHZvaWQgQnVpbHRpbkV4ZWN1dGFi
bGVzOjpmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpCkBAIC0xMTUsMTUg
KzEyNSwxOCBAQCB2b2lkIEJ1aWx0aW5FeGVjdXRhYmxlczo6ZmluYWxpemUoSGFuZGxlPFVua25v
d24+LCB2b2lkKiBjb250ZXh0KQogfQogCiAjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFC
TEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGVOYW1lLCBsZW5ndGgpIFwKLVVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6Om5hbWUjI0V4ZWN1dGFibGUo
KSBcCitFeHBlY3RlZFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIEJ1aWx0aW5FeGVjdXRhYmxl
czo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKIHtcCiAgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJs
ZSkge1wKICAgICAgICAgSWRlbnRpZmllciBleGVjdXRhYmxlTmFtZSA9IG1fdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCk7XAogICAgICAg
ICBpZiAob3ZlcnJpZGVOYW1lKVwKICAgICAgICAgICAgIGV4ZWN1dGFibGVOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmbV92bSwgb3ZlcnJpZGVOYW1lKTtcCi0gICAgICAgIG1fIyNuYW1l
IyNFeGVjdXRhYmxlID0gV2VhazxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4oY3JlYXRlQnVp
bHRpbkV4ZWN1dGFibGUobV8jI25hbWUjI1NvdXJjZSwgZXhlY3V0YWJsZU5hbWUsIHNfIyNuYW1l
IyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRhYmxlKTtcCisgICAg
ICAgIEV4cGVjdGVkVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZiA9IGNyZWF0ZUJ1aWx0aW5F
eGVjdXRhYmxlKG1fIyNuYW1lIyNTb3VyY2UsIGV4ZWN1dGFibGVOYW1lLCBzXyMjbmFtZSMjQ29u
c3RydWN0QWJpbGl0eSk7XAorICAgICAgICBpZiAoIWYuaGFzX3ZhbHVlKCkpXAorICAgICAgICAg
ICAgcmV0dXJuIGY7XAorICAgICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IFdlYWs8VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU+KGYudmFsdWUoKSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRh
YmxlKTtcCiAgICAgfVwKLSAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7XAor
ICAgIHJldHVybiBFeHBlY3RlZFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKG1fIyNuYW1lIyNF
eGVjdXRhYmxlLmdldCgpKTtcCiB9CiBKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JV
SUxUSU5fRVhFQ1VUQUJMRVMpCiAjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU09VUkNFUwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCmlu
ZGV4IDM2OGEzMWI3YWNiNmEzMmM5ZDU4ZTVkZTI4MDFjMjg5YmJmNTJhMmYuLjcyNDY2ZDFhMzJl
M2NiNDY2M2MyMTkwYTI5MzE4YTYxMTc4OTQ3ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKQEAgLTI2LDEwICsyNiwxMSBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgotI2luY2x1ZGUgIlBh
cnNlck1vZGVzLmgiCisjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5o
IgogI2luY2x1ZGUgIldlYWsuaCIKICNpbmNsdWRlICJXZWFrSGFuZGxlT3duZXIuaCIKKyNpbmNs
dWRlIDx3dGYvRXhwZWN0ZWQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM3LDEzICszOCwx
NSBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIElkZW50aWZpZXI7
CiBjbGFzcyBWTTsKIAordHlwZWRlZiBFeHBlY3RlZDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSosIFBhcnNlckVycm9yPiBFeHBlY3RlZFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOworCiBj
bGFzcyBCdWlsdGluRXhlY3V0YWJsZXMgZmluYWw6IHByaXZhdGUgV2Vha0hhbmRsZU93bmVyIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBCdWls
dGluRXhlY3V0YWJsZXMoVk0mKTsKIAogI2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxF
UyhuYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpIFwKLVVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwKK0V4cGVjdGVkVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUgbmFtZSMjRXhlY3V0YWJsZSgpOyBcCiBjb25zdCBTb3VyY2VD
b2RlJiBuYW1lIyNTb3VyY2UoKSB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CiAgICAgCiAg
ICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQpA
QCAtNTEsMTMgKzU0LDE0IEBAIGNvbnN0IFNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIHsgcmV0
dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KIAogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lKTsKIAotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3Jl
YXRlRXhlY3V0YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwg
Q29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5KTsKKyAgICBzdGF0aWMgRXhwZWN0ZWRV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBjcmVhdGVFeGVjdXRhYmxlKFZNJiwgY29uc3QgU291
cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBDb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFi
aWxpdHkpOworICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRXhl
Y3V0YWJsZU9yQ3Jhc2goVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYs
IENvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSk7CiBwcml2YXRlOgogICAgIHZvaWQg
ZmluYWxpemUoSGFuZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0KSBvdmVycmlkZTsKIAogICAg
IFZNJiBtX3ZtOwogCi0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0
aW5FeGVjdXRhYmxlKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgQ29uc3Ry
dWN0QWJpbGl0eSk7CisgICAgRXhwZWN0ZWRVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBjcmVh
dGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYs
IENvbnN0cnVjdEFiaWxpdHkpOwogCiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVN
QkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpXAogICAgIFNv
dXJjZUNvZGUgbV8jI25hbWUjI1NvdXJjZTsgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDBlZGZlM2RmNGVm
NjM4YzExMjVhN2MyYTM5MGIzODBhNGQyYzIxNDYuLmRkYjQ2MTIyNmUzNzQ2NTZhZjBiMTI1OWYz
NWM4OTdmNmEzYzUxMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNs
dWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAi
SlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlckVycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyRXJyb3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkMWM5ZTE1ZDhiYmVhNDFmNjE0MDc0YWU4
ZGRjOTFkMzVhN2FmNmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlckVycm9yLmNwcApAQCAtMCwwICsxLDEyNSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJQYXJzZXJFcnJvci5oIgorCisjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCisj
aW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIkhlYXBDZWxsSW5saW5lcy5o
IgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKK0pT
T2JqZWN0KiBQYXJzZXJFcnJvcjo6dG9FcnJvck9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGludCBvdmVycmlkZUxpbmVOdW1iZXIp
Cit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7Cisg
ICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIEVycm9yTm9uZToKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgY2FzZSBTeW50YXhFcnJvcjogeworICAgICAgICBhdXRvIHN5bnRheEVy
cm9yID0gY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgbV9tZXNzYWdlKTsKKyAgICAgICAgYXV0byBs
aW5lID0gb3ZlcnJpZGVMaW5lTnVtYmVyID09IC0xID8gbV9saW5lIDogb3ZlcnJpZGVMaW5lTnVt
YmVyOworICAgICAgICByZXR1cm4gYWRkRXJyb3JJbmZvKGV4ZWMsIHN5bnRheEVycm9yLCBsaW5l
LCBzb3VyY2UpOworICAgIH0KKyAgICBjYXNlIEV2YWxFcnJvcjoKKyAgICAgICAgcmV0dXJuIGNy
ZWF0ZVN5bnRheEVycm9yKGV4ZWMsIG1fbWVzc2FnZSk7CisgICAgY2FzZSBTdGFja092ZXJmbG93
OiB7CisgICAgICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3BlKGdsb2JhbE9iamVjdC0+
dm0oKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7Cisg
ICAgfQorICAgIGNhc2UgT3V0T2ZNZW1vcnk6CisgICAgICAgIHJldHVybiBjcmVhdGVPdXRPZk1l
bW9yeUVycm9yKGV4ZWMpOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworfQorCitKU09iamVjdCogUGFyc2VyRXJyb3I6OnRocm93U3RhY2tPdmVyZmxvd09yT3V0T2ZN
ZW1vcnkoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHN3aXRjaCAobV90eXBl
KSB7CisgICAgY2FzZSBFcnJvck5vbmU6CisgICAgY2FzZSBFdmFsRXJyb3I6CisgICAgY2FzZSBT
eW50YXhFcnJvcjoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBj
YXNlIFN0YWNrT3ZlcmZsb3c6CisgICAgICAgIGlmICghZXhlYykgeworICAgICAgICAgICAgZGF0
YUxvZ0xuKCJIaXQgYSBzdGFjayBvdmVyZmxvdyB3aGlsZSBwYXJzaW5nLCBkaWQgbm90IGhhdmUg
YW4gRXhlY1N0YXRlIHRvIHByb2R1Y2UgYSByZWNvdmVyYWJsZSBqcyBleGNlcHRpb24iKTsKKyAg
ICAgICAgICAgIENSQVNIKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRocm93U3RhY2tP
dmVyZmxvd0Vycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICBjYXNlIE91dE9mTWVtb3J5OgorICAgICAg
ICBpZiAoIWV4ZWMpIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiSGl0IGEgc3RhY2sgb3ZlcmZs
b3cgd2hpbGUgcGFyc2luZywgZGlkIG5vdCBoYXZlIGFuIEV4ZWNTdGF0ZSB0byBwcm9kdWNlIGEg
cmVjb3ZlcmFibGUganMgZXhjZXB0aW9uIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwor
ICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKK25hbWVzcGFjZSBXVEYgewordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiBvdXQsIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9yVHlwZSB0eXBlKQoreworICAgIHN3
aXRjaCAodHlwZSkgeworICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JOb25l
OgorICAgICAgICBvdXQucHJpbnQoIlN5bnRheEVycm9yTm9uZSIpOworICAgICAgICByZXR1cm47
CisgICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJvcklycmVjb3ZlcmFibGU6Cisg
ICAgICAgIG91dC5wcmludCgiU3ludGF4RXJyb3JJcnJlY292ZXJhYmxlIik7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9yVW50ZXJtaW5hdGVk
TGl0ZXJhbDoKKyAgICAgICAgb3V0LnByaW50KCJTeW50YXhFcnJvclVudGVybWluYXRlZExpdGVy
YWwiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6U3ludGF4
RXJyb3JSZWNvdmVyYWJsZToKKyAgICAgICAgb3V0LnByaW50KCJTeW50YXhFcnJvclJlY292ZXJh
YmxlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKK30KKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6
UGFyc2VyRXJyb3I6OkVycm9yVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAg
IGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6RXJyb3JOb25lOgorICAgICAgICBvdXQucHJpbnQoIkVy
cm9yTm9uZSIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpT
dGFja092ZXJmbG93OgorICAgICAgICBvdXQucHJpbnQoIlN0YWNrT3ZlcmZsb3ciKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6RXZhbEVycm9yOgorICAgICAg
ICBvdXQucHJpbnQoIkV2YWxFcnJvciIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6
OlBhcnNlckVycm9yOjpPdXRPZk1lbW9yeToKKyAgICAgICAgb3V0LnByaW50KCJPdXRPZk1lbW9y
eSIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhF
cnJvcjoKKyAgICAgICAgb3V0LnByaW50KCJTeW50YXhFcnJvciIpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9Cit9IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
RXJyb3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJyb3IuaAppbmRl
eCA3ODgzZWZlZDIyNTAyMmMwMjA2Yjc4NjQwYjVhNzE3ODlkOWNlYTUyLi5jMGJjMzk5NGUxYjJj
NDkwNjY5YTdjODg4Yzg3ZTY2NmEwOGIyYTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlckVycm9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJFcnJvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNSw5ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiRXJyb3IuaCIKLSNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKLSNpbmNsdWRl
ICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiUGFyc2VyVG9rZW5zLmgiCiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTg0LDMxICs4MSw4IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0KICAg
ICBpbnQgbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZTsgfQogCi0gICAgSlNPYmplY3QqIHRv
RXJyb3JPYmplY3QoCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgCi0gICAgICAgIGludCBvdmVycmlkZUxpbmVOdW1iZXIgPSAt
MSkKLSAgICB7Ci0gICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpOwotICAgICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgICAgICBjYXNlIEVycm9yTm9u
ZToKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBjYXNlIFN5bnRheEVycm9y
OgotICAgICAgICAgICAgcmV0dXJuIGFkZEVycm9ySW5mbygKLSAgICAgICAgICAgICAgICBleGVj
LCAKLSAgICAgICAgICAgICAgICBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBtX21lc3NhZ2UpLCAK
LSAgICAgICAgICAgICAgICBvdmVycmlkZUxpbmVOdW1iZXIgPT0gLTEgPyBtX2xpbmUgOiBvdmVy
cmlkZUxpbmVOdW1iZXIsIHNvdXJjZSk7Ci0gICAgICAgIGNhc2UgRXZhbEVycm9yOgotICAgICAg
ICAgICAgcmV0dXJuIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIG1fbWVzc2FnZSk7Ci0gICAgICAg
IGNhc2UgU3RhY2tPdmVyZmxvdzogewotICAgICAgICAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVy
cm9yU2NvcGUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKLSAgICAgICAgICAgIHJldHVybiBjcmVhdGVT
dGFja092ZXJmbG93RXJyb3IoZXhlYyk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBPdXRPZk1l
bW9yeToKLSAgICAgICAgICAgIHJldHVybiBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOwot
ICAgICAgICB9Ci0gICAgICAgIENSQVNIKCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IH0KKyAgICBKU09iamVjdCogdG9FcnJvck9iamVjdChKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNv
dXJjZUNvZGUmLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyID0gLTEpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEpTT2JqZWN0KiB0aHJvd1N0YWNrT3ZlcmZsb3dPck91dE9mTWVtb3J5KEV4ZWNTdGF0
ZSogPSBudWxscHRyKTsKIAogcHJpdmF0ZToKICAgICBKU1Rva2VuIG1fdG9rZW47CkBAIC0xMjEs
NDggKzk1LDYgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RG
IHsKLQotaW5saW5lIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OlBh
cnNlckVycm9yOjpTeW50YXhFcnJvclR5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsK
LSAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9yTm9uZToKLSAgICAgICAgb3V0
LnByaW50KCJTeW50YXhFcnJvck5vbmUiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlND
OjpQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JJcnJlY292ZXJhYmxlOgotICAgICAgICBvdXQucHJp
bnQoIlN5bnRheEVycm9ySXJyZWNvdmVyYWJsZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJvclVudGVybWluYXRlZExpdGVyYWw6Ci0gICAg
ICAgIG91dC5wcmludCgiU3ludGF4RXJyb3JVbnRlcm1pbmF0ZWRMaXRlcmFsIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9yUmVjb3ZlcmFi
bGU6Ci0gICAgICAgIG91dC5wcmludCgiU3ludGF4RXJyb3JSZWNvdmVyYWJsZSIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci19Ci0KLWlubGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpQ
YXJzZXJFcnJvcjo6RXJyb3JUeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAg
Y2FzZSBKU0M6OlBhcnNlckVycm9yOjpFcnJvck5vbmU6Ci0gICAgICAgIG91dC5wcmludCgiRXJy
b3JOb25lIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN0
YWNrT3ZlcmZsb3c6Ci0gICAgICAgIG91dC5wcmludCgiU3RhY2tPdmVyZmxvdyIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpFdmFsRXJyb3I6Ci0gICAgICAg
IG91dC5wcmludCgiRXZhbEVycm9yIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpTQzo6
UGFyc2VyRXJyb3I6Ok91dE9mTWVtb3J5OgotICAgICAgICBvdXQucHJpbnQoIk91dE9mTWVtb3J5
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVy
cm9yOgotICAgICAgICBvdXQucHJpbnQoIlN5bnRheEVycm9yIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQordm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpQYXJzZXJFcnJvcjo6U3ludGF4RXJy
b3JUeXBlKTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6UGFyc2VyRXJy
b3I6OkVycm9yVHlwZSk7CiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5kZXgg
ODAwY2ZhMDk2NDFjMGNhMjgwOGYwNTYwMTJlZGEzZDAyMzIyMzdmNy4uMTc2MTk5MDljNTNmNGZk
NTBjYjJkMzRjYjRkOGEyNGI0NzJiOTEzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTQxLDcgKzQx
LDcgQEAgdm9pZCBBc3luY0l0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGlu
Zm8oKSkpOwogICAgIGRpZEJlY29tZVByb3RvdHlwZSgpOwogCi0gICAgSlNGdW5jdGlvbiogYXN5
bmNJdGVyYXRvclByb3RvdHlwZUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBhc3lu
Y0l0ZXJhdG9yUHJvdG90eXBlU3ltYm9sQXN5bmNJdGVyYXRvckdldHRlckNvZGVHZW5lcmF0b3Io
dm0pLCBnbG9iYWxPYmplY3QpOworICAgIEpTRnVuY3Rpb24qIGFzeW5jSXRlcmF0b3JQcm90b3R5
cGVGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgYXN5bmNJdGVyYXRvclByb3RvdHlw
ZVN5bWJvbEFzeW5jSXRlcmF0b3JHZXR0ZXJDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpLCBnbG9i
YWxPYmplY3QpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5hc3luY0l0ZXJhdG9yU3ltYm9sLCBhc3luY0l0ZXJhdG9yUHJvdG90eXBlRnVuY3Rp
b24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Q
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90
b3R5cGUuY3BwCmluZGV4IGQwZmQ3NjI0N2NiYzE2YjYwYTRiYTJlNGQzYjM1ZTg4ZTZlNDlmZDku
LmE2ZWQzNWEwMDZmNDgyMDA3N2NkZmU3YWY5ZDEzYzQyODAxNDM4NzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTYz
LDExICs2MywxMSBAQCB2b2lkIEZ1bmN0aW9uUHJvdG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRp
ZXMoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZwogICAgIEpTRnVuY3Rpb24qIHRv
U3RyaW5nRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwg
dm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcuc3RyaW5nKCksIGZ1bmN0aW9uUHJvdG9GdW5jVG9T
dHJpbmcpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT50b1N0cmluZywgdG9TdHJpbmdGdW5jdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogCi0gICAgKmFwcGx5RnVuY3Rpb24gPSBwdXRE
aXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCB2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hcHBseVB1YmxpY05hbWUoKSwgZnVuY3Rp
b25Qcm90b3R5cGVBcHBseUNvZGVHZW5lcmF0b3Iodm0pLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgKmNhbGxGdW5jdGlvbiA9IHB1dERp
cmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmNhbGxQdWJsaWNOYW1lKCksIGZ1bmN0aW9u
UHJvdG90eXBlQ2FsbENvZGVHZW5lcmF0b3Iodm0pLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Ymlu
ZCwgZnVuY3Rpb25Qcm90b3R5cGVCaW5kQ29kZUdlbmVyYXRvcih2bSksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICAqYXBwbHlGdW5jdGlv
biA9IHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxP
YmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFwcGx5UHVibGljTmFtZSgp
LCBmdW5jdGlvblByb3RvdHlwZUFwcGx5Q29kZUdlbmVyYXRvcih2bSkudmFsdWUoKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgICpjYWxs
RnVuY3Rpb24gPSBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jYWxsUHVibGlj
TmFtZSgpLCBmdW5jdGlvblByb3RvdHlwZUNhbGxDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAg
cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVj
dCwgdm0ucHJvcGVydHlOYW1lcy0+YmluZCwgZnVuY3Rpb25Qcm90b3R5cGVCaW5kQ29kZUdlbmVy
YXRvcih2bSkudmFsdWUoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSkpOwogCi0gICAgKmhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24gPSBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uUHJvdG90eXBlU3ltYm9sSGFzSW5zdGFuY2VDb2RlR2Vu
ZXJhdG9yKHZtKSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAqaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlv
biA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb25Qcm90b3R5cGVTeW1ib2xIYXNJbnN0
YW5jZUNvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIGdsb2JhbE9iamVjdCk7CiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmhhc0luc3RhbmNlU3lt
Ym9sLCAqaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbiwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDhmODQwY2M0N2RmNDIzNTUwZDUzYzQ4Njg1M2NkYmQ5
Y2JhYTZlNWUuLmQ5YTlhMjcwMWNhNmQ4NDExOGFmOTYzMjZlY2QyMmExOWNkYWE0NDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAg
LTQ0MywyNCArNDQzLDI0IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAg
ICAgICB9KTsKICAgICBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5pbml0TGF0ZXIoCiAgICAg
ICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Z1bmN0aW9uPiYgaW5pdCkgewotICAgICAgICAg
ICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGFycmF5UHJvdG90eXBlVmFs
dWVzQ29kZUdlbmVyYXRvcihpbml0LnZtKSwgaW5pdC5vd25lcikpOworICAgICAgICAgICAgaW5p
dC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGFycmF5UHJvdG90eXBlVmFsdWVzQ29k
ZUdlbmVyYXRvcihpbml0LnZtKS52YWx1ZSgpLCBpbml0Lm93bmVyKSk7CiAgICAgICAgIH0pOwog
ICAgIG1faW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbi5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChj
b25zdCBJbml0aWFsaXplcjxKU0Z1bmN0aW9uPiYgaW5pdCkgewotICAgICAgICAgICAgaW5pdC5z
ZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIHByb21pc2VPcGVyYXRpb25zSW5pdGlhbGl6
ZVByb21pc2VDb2RlR2VuZXJhdG9yKGluaXQudm0pLCBpbml0Lm93bmVyKSk7CisgICAgICAgICAg
ICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwgcHJvbWlzZU9wZXJhdGlvbnNJ
bml0aWFsaXplUHJvbWlzZUNvZGVHZW5lcmF0b3IoaW5pdC52bSkudmFsdWUoKSwgaW5pdC5vd25l
cikpOwogICAgICAgICB9KTsKIAogICAgIG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uLmluaXRM
YXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rpb24+JiBpbml0KSB7
Ci0gICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwgaXRlcmF0
b3JIZWxwZXJzUGVyZm9ybUl0ZXJhdGlvbkNvZGVHZW5lcmF0b3IoaW5pdC52bSksIGluaXQub3du
ZXIpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBp
dGVyYXRvckhlbHBlcnNQZXJmb3JtSXRlcmF0aW9uQ29kZUdlbmVyYXRvcihpbml0LnZtKS52YWx1
ZSgpLCBpbml0Lm93bmVyKSk7CiAgICAgICAgIH0pOwogCiAgICAgbV9wcm9taXNlUmVzb2x2ZUZ1
bmN0aW9uLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rp
b24+JiBpbml0KSB7Ci0gICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5p
dC52bSwgcHJvbWlzZUNvbnN0cnVjdG9yUmVzb2x2ZUNvZGVHZW5lcmF0b3IoaW5pdC52bSksIGlu
aXQub3duZXIpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0
LnZtLCBwcm9taXNlQ29uc3RydWN0b3JSZXNvbHZlQ29kZUdlbmVyYXRvcihpbml0LnZtKS52YWx1
ZSgpLCBpbml0Lm93bmVyKSk7CiAgICAgICAgIH0pOwogCi0gICAgbV9uZXdQcm9taXNlQ2FwYWJp
bGl0eUZ1bmN0aW9uLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBwcm9taXNl
T3BlcmF0aW9uc05ld1Byb21pc2VDYXBhYmlsaXR5Q29kZUdlbmVyYXRvcih2bSksIHRoaXMpKTsK
KyAgICBtX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIHByb21pc2VPcGVyYXRpb25zTmV3UHJvbWlzZUNhcGFiaWxpdHlDb2Rl
R2VuZXJhdG9yKHZtKS52YWx1ZSgpLCB0aGlzKSk7CiAgICAgbV9mdW5jdGlvblByb3RvSGFzSW5z
dGFuY2VTeW1ib2xGdW5jdGlvbi5zZXQodm0sIHRoaXMsIGhhc0luc3RhbmNlU3ltYm9sRnVuY3Rp
b24pOwogICAgIG1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIuaW5pdExhdGVyKAogICAgICAg
ICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8R2V0dGVyU2V0dGVyPiYgaW5pdCkgewpAQCAtNDkxLDcg
KzQ5MSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fZnVuY3Rp
b25Qcm90b3R5cGUtPmluaXRSZXN0cmljdGVkUHJvcGVydGllcyhleGVjLCB0aGlzKTsKIAogICAg
IG1fc3BlY2llc0dldHRlclNldHRlci5zZXQodm0sIHRoaXMsIEdldHRlclNldHRlcjo6Y3JlYXRl
KHZtLCB0aGlzKSk7Ci0gICAgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLT5zZXRHZXR0ZXIodm0sIHRo
aXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT3BlcmF0aW9uc1NwZWNpZXNHZXR0ZXJD
b2RlR2VuZXJhdG9yKHZtKSwgdGhpcykpOworICAgIG1fc3BlY2llc0dldHRlclNldHRlci0+c2V0
R2V0dGVyKHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9wZXJhdGlvbnNT
cGVjaWVzR2V0dGVyQ29kZUdlbmVyYXRvcih2bSkudmFsdWUoKSwgdGhpcykpOwogCiAgICAgbV90
eXBlZEFycmF5UHJvdG8uaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8
SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZT4mIGluaXQpIHsKQEAgLTUxMyw3ICs1MTMsNyBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAgICAgW10gKExhenlDbGFzc1N0
cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGluaXQpIHsgXAogICAgICAgICAgICAgaW5pdC5zZXRQcm90
b3R5cGUoSlMgIyMgdHlwZSAjIyBBcnJheVByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIGluaXQu
Z2xvYmFsLCBKUyAjIyB0eXBlICMjIEFycmF5UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5p
dC52bSwgaW5pdC5nbG9iYWwsIGluaXQuZ2xvYmFsLT5tX3R5cGVkQXJyYXlQcm90by5nZXQoaW5p
dC5nbG9iYWwpKSkpOyBcCiAgICAgICAgICAgICBpbml0LnNldFN0cnVjdHVyZShKUyAjIyB0eXBl
ICMjIEFycmF5OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGluaXQucHJv
dG90eXBlKSk7IFwKLSAgICAgICAgICAgIGluaXQuc2V0Q29uc3RydWN0b3IoSlMgIyMgdHlwZSAj
IyBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIEpTICMjIHR5
cGUgIyMgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xv
YmFsLCBpbml0Lmdsb2JhbC0+bV90eXBlZEFycmF5U3VwZXJDb25zdHJ1Y3Rvci5nZXQoaW5pdC5n
bG9iYWwpKSwgaW5pdC5wcm90b3R5cGUsIEFTQ0lJTGl0ZXJhbCgjdHlwZSAiQXJyYXkiKSwgdHlw
ZWRBcnJheUNvbnN0cnVjdG9yQWxsb2NhdGUgIyMgdHlwZSAjIyBBcnJheUNvZGVHZW5lcmF0b3Io
aW5pdC52bSkpKTsgXAorICAgICAgICAgICAgaW5pdC5zZXRDb25zdHJ1Y3RvcihKUyAjIyB0eXBl
ICMjIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgSlMgIyMg
dHlwZSAjIyBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5n
bG9iYWwsIGluaXQuZ2xvYmFsLT5tX3R5cGVkQXJyYXlTdXBlckNvbnN0cnVjdG9yLmdldChpbml0
Lmdsb2JhbCkpLCBpbml0LnByb3RvdHlwZSwgQVNDSUlMaXRlcmFsKCN0eXBlICJBcnJheSIpLCB0
eXBlZEFycmF5Q29uc3RydWN0b3JBbGxvY2F0ZSAjIyB0eXBlICMjIEFycmF5Q29kZUdlbmVyYXRv
cihpbml0LnZtKS52YWx1ZSgpKSk7IFwKICAgICAgICAgICAgIGluaXQuZ2xvYmFsLT5wdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihpbml0LnZtLCBpbml0LnZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLnR5cGUgIyMgQXJyYXlQcml2YXRlTmFtZSgpLCBpbml0LmNvbnN0cnVjdG9yLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7IFwKICAg
ICAgICAgfSk7CiAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9W
SUVXKElOSVRfVFlQRURfQVJSQVlfTEFURVIpCkBAIC04MzcsNyArODM3LDcgQEAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFt
ZSAjIyBDb25zdHJ1Y3QKICAgICBKU09iamVjdCogcmVnRXhwU3ltYm9sUmVwbGFjZSA9IGFzT2Jq
ZWN0KG1fcmVnRXhwUHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJl
cGxhY2VTeW1ib2wpLmFzQ2VsbCgpKTsKICAgICBtX3JlZ0V4cFByb3RvU3ltYm9sUmVwbGFjZS5z
ZXQodm0sIHRoaXMsIHJlZ0V4cFN5bWJvbFJlcGxhY2UpOwogCi0jZGVmaW5lIENSRUFURV9QUklW
QVRFX0dMT0JBTF9GVU5DVElPTihuYW1lLCBjb2RlKSBKU0Z1bmN0aW9uKiBuYW1lICMjIFByaXZh
dGVGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgY29kZSAjIyBDb2RlR2VuZXJhdG9y
KHZtKSwgdGhpcyk7CisjZGVmaW5lIENSRUFURV9QUklWQVRFX0dMT0JBTF9GVU5DVElPTihuYW1l
LCBjb2RlKSBKU0Z1bmN0aW9uKiBuYW1lICMjIFByaXZhdGVGdW5jdGlvbiA9IEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgY29kZSAjIyBDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpLCB0aGlzKTsKICAg
ICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX1BSSVZBVEVfR0xPQkFMX05BTUUoQ1JFQVRF
X1BSSVZBVEVfR0xPQkFMX0ZVTkNUSU9OKQogI3VuZGVmIENSRUFURV9QUklWQVRFX0dMT0JBTF9G
VU5DVElPTgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5k
ZXggMjUyNTkxM2RmMzczMzFmNTdhN2I1MjVjNmYwMTIwODA1YTdlZmNkMi4uOGJlNjNjZGU2OWRi
MjNiMTY4OTk2ZTlkYTE0MjAyNWVmMzA2NTVhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMjAzNCwxMiArMjAzNCwxNSBAQCBib29sIEpTT2JqZWN0
OjpnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiBleGVjLCBkb3VibGUmIG51bWJlciwgSlNW
YWx1ZSYgcmVzdQogICAgIHJldHVybiAhcmVzdWx0LmlzU3RyaW5nKCk7CiB9CiAKLWJvb2wgSlNP
YmplY3Q6OmdldE93blN0YXRpY1Byb3BlcnR5U2xvdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNPYmplY3Q6OmdldE93blN0YXRp
Y1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBmb3IgKGF1dG8qIGluZm8g
PSBjbGFzc0luZm8odm0pOyBpbmZvOyBpbmZvID0gaW5mby0+cGFyZW50Q2xhc3MpIHsKICAgICAg
ICAgaWYgKGF1dG8qIHRhYmxlID0gaW5mby0+c3RhdGljUHJvcEhhc2hUYWJsZSkgewotICAgICAg
ICAgICAgaWYgKGdldFN0YXRpY1Byb3BlcnR5U2xvdEZyb21UYWJsZSh2bSwgdGFibGUtPmNsYXNz
Rm9yVGhpcywgKnRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQorICAgICAgICAgICAg
aWYgKGdldFN0YXRpY1Byb3BlcnR5U2xvdEZyb21UYWJsZShleGVjLCB0YWJsZS0+Y2xhc3NGb3JU
aGlzLCAqdGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxz
ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjMyNSw2ICsyMzI4
LDcgQEAgdm9pZCBKU09iamVjdDo6cmVpZnlBbGxTdGF0aWNQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKICAgICBBU1NFUlQoIXN0YXRpY1Byb3BlcnRpZXNSZWlmaWVkKCkpOwogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCiAgICAgLy8gSWYgdGhpcyBvYmplY3QncyBDbGFzc0luZm8gaGFzIG5vIHN0YXRpYyBw
cm9wZXJ0aWVzLCB0aGVuIG5vdGhpbmcgdG8gcmVpZnkhCiAgICAgLy8gV2UgY2FuIHNhZmVseSBz
ZXQgdGhlIGZsYWcgdG8gYXZvaWQgdGhlIGV4cGVuc2l2ZSBjaGVjayBhZ2FpbiBpbiB0aGUgZnV0
dXJlLgpAQCAtMjM0NSw4ICsyMzQ5LDEwIEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5QWxsU3RhdGlj
UHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1
dGVzOwogICAgICAgICAgICAgYXV0byBrZXkgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
dmFsdWUubV9rZXkpOwogICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gZ2V0RGly
ZWN0T2Zmc2V0KHZtLCBrZXksIGF0dHJpYnV0ZXMpOwotICAgICAgICAgICAgaWYgKCFpc1ZhbGlk
T2Zmc2V0KG9mZnNldCkpCi0gICAgICAgICAgICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwg
aGFzaFRhYmxlLT5jbGFzc0ZvclRoaXMsIGtleSwgdmFsdWUsICp0aGlzKTsKKyAgICAgICAgICAg
IGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7CisgICAgICAgICAgICAgICAgcmVpZnlTdGF0
aWNQcm9wZXJ0eSh2bSwgaGFzaFRhYmxlLT5jbGFzc0ZvclRoaXMsIGtleSwgdmFsdWUsICp0aGlz
LCBleGVjKTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA1OTBiYTFkOTI5OTM0OWZiZTAzMjk2NDgwOTQw
Yjg0MzRjZTFmZDExLi5iMDhhN2U0NzUyYjM2Nzc5ZTFiNmQ4Yjk3YjllZjNiY2E5ZDA3MDVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTk0LDcgKzk0LDcg
QEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBmcmllbmQgY2xhc3MgSlND
ZWxsOwogICAgIGZyaWVuZCBjbGFzcyBKU0ZpbmFsT2JqZWN0OwogICAgIGZyaWVuZCBjbGFzcyBN
YXJrZWRCbG9jazsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBmcmllbmQgYm9vbCBzZXRVcFN0YXRp
Y0Z1bmN0aW9uU2xvdChWTSYsIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiwgSlNPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGZyaWVuZCBi
b29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0IEhhc2hUYWJsZVZh
bHVlKiwgSlNPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCiAgICAgZW51
bSBQdXRNb2RlIHsKICAgICAgICAgUHV0TW9kZVB1dCwKQEAgLTEwMjcsMTEgKzEwMjcsMTEgQEAg
cHJpdmF0ZToKICAgICBKU19FWFBPUlRfUFJJVkFURSBORVZFUl9JTkxJTkUgYm9vbCBwdXRJbmxp
bmVTbG93KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CiAKICAgICBib29sIGdldE5vbkluZGV4UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgYm9vbCBnZXRPd25Ob25JbmRleFByb3BlcnR5
U2xvdChWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAg
Ym9vbCBnZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZmlsbEdldHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNsb3QmLCBKU0NlbGwqLCB1bnNpZ25lZCwg
UHJvcGVydHlPZmZzZXQpOwogICAgIHZvaWQgZmlsbEN1c3RvbUdldHRlclByb3BlcnR5U2xvdChW
TSYsIFByb3BlcnR5U2xvdCYsIEN1c3RvbUdldHRlclNldHRlciosIHVuc2lnbmVkLCBTdHJ1Y3R1
cmUqKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0T3duU3RhdGljUHJvcGVydHlT
bG90KFZNJiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBib29sIGdldE93blN0YXRpY1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0cnVjdCBQcm9wZXJ0eUhhc2hFbnRyeSB7CiAgICAg
ICAgIGNvbnN0IEhhc2hUYWJsZSogdGFibGU7CiAgICAgICAgIGNvbnN0IEhhc2hUYWJsZVZhbHVl
KiB2YWx1ZTsKQEAgLTEzNDMsMTQgKzEzNDMsMTUgQEAgaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6
OmdldFByb3RvdHlwZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIAogLy8gSXQgaXMgc2FmZSB0
byBjYWxsIHRoaXMgbWV0aG9kIHdpdGggYSBQcm9wZXJ0eU5hbWUgdGhhdCBpcyBhY3R1YWxseSBh
biBpbmRleCwKIC8vIGJ1dCBpZiBzbyB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgKGRvZXNuJ3Qg
c2VhcmNoIGluZGV4IHN0b3JhZ2UpLgotQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRP
d25Ob25JbmRleFByb3BlcnR5U2xvdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitBTFdBWVNfSU5MSU5F
IGJvb2wgSlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIHVuc2lnbmVk
IGF0dHJpYnV0ZXM7CiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQo
dm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9m
ZnNldCkpIHsKICAgICAgICAgaWYgKCFUeXBlSW5mbzo6aGFzU3RhdGljUHJvcGVydHlUYWJsZShp
bmxpbmVUeXBlRmxhZ3MoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJl
dHVybiBnZXRPd25TdGF0aWNQcm9wZXJ0eVNsb3Qodm0sIHByb3BlcnR5TmFtZSwgc2xvdCk7Cisg
ICAgICAgIHJldHVybiBnZXRPd25TdGF0aWNQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1l
LCBzbG90KTsKICAgICB9CiAgICAgCiAgICAgLy8gZ2V0UHJvcGVydHlTbG90IHJlbGllcyBvbiB0
aGlzIG1ldGhvZCBuZXZlciByZXR1cm5pbmcgaW5kZXggcHJvcGVydGllcyEKQEAgLTE0MDAsMTkg
KzE0MDEsMjIgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpTT2JqZWN0OjpmaWxsQ3VzdG9tR2V0dGVy
UHJvcGVydHlTbG90KFZNJiB2bSwgUHJvcGVydHlTbG90JgogQUxXQVlTX0lOTElORSBib29sIEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvYmplY3QtPnN0cnVjdHVyZSh2
bSk7Ci0gICAgaWYgKG9iamVjdC0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3Qodm0sIHN0cnVj
dHVyZSwgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICBpZiAob2JqZWN0LT5nZXRPd25Ob25JbmRl
eFByb3BlcnR5U2xvdChleGVjLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsK
ICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3Bl
cnR5TmFtZSkpCiAgICAgICAgIHJldHVybiBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KG9iamVj
dCwgZXhlYywgaW5kZXgudmFsdWUoKSwgc2xvdCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiAv
LyBJdCBtYXkgc2VlbSBjcmF6eSB0byBpbmxpbmUgYSBmdW5jdGlvbiB0aGlzIGxhcmdlIGJ1dCBp
dCBtYWtlcyBhIGJpZyBkaWZmZXJlbmNlCi0vLyBzaW5jZSB0aGlzIGlzIGZ1bmN0aW9uIHZlcnkg
aG90IGluIHZhcmlhYmxlIGxvb2t1cAorLy8gc2luY2UgdGhpcyBmdW5jdGlvbiBpcyB2ZXJ5IGhv
dCBpbiB2YXJpYWJsZSBsb29rdXAKIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJv
cGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8mIHN0cnVjdHVyZUlEVGFi
bGUgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0g
dGhpczsKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtMTQyOSw4ICsxNDMzLDkgQEAgQUxXQVlTX0lO
TElORSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGUKICAgICAgICAgfQogICAgICAgICBBU1NFUlQob2JqZWN0LT50eXBlKCkg
IT0gUHJveHlPYmplY3RUeXBlKTsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHJ1
Y3R1cmVJRFRhYmxlLmdldChvYmplY3QtPnN0cnVjdHVyZUlEKCkpOwotICAgICAgICBpZiAob2Jq
ZWN0LT5nZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdCh2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpKQorICAgICAgICBpZiAob2JqZWN0LT5nZXRPd25Ob25JbmRleFByb3BlcnR5U2xv
dChleGVjLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAg
ICAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IGxvb2sgbGlrZSBpdCdzIGZvbGxvd2luZyB0aGUg
c3BlY2lmaWNhdGlvbjoKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MjU3MgogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHN0cnVjdHVyZS0+
c3RvcmVkUHJvdG90eXBlKG9iamVjdCk7CkBAIC0xNjMxLDcgKzE2MzYsNyBAQCBKU19FWFBPUlRf
UFJJVkFURSBORVZFUl9JTkxJTkUgYm9vbCBvcmRpbmFyeVNldFNsb3coRXhlY1N0YXRlKiwgSlNP
YmplY3QqLCBQcm9wZQogCiAjZGVmaW5lIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTihqc05hbWUsIGdlbmVyYXRvck5hbWUsIGF0dHJpYnV0ZXMpIFwKICAgICBwdXREaXJl
Y3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihcCi0gICAgICAgIHZtLCBnbG9iYWxP
YmplY3QsIG1ha2VJZGVudGlmaWVyKHZtLCAoanNOYW1lKSksIChnZW5lcmF0b3JOYW1lKSh2bSks
IChhdHRyaWJ1dGVzKSkKKyAgICAgICAgdm0sIGdsb2JhbE9iamVjdCwgbWFrZUlkZW50aWZpZXIo
dm0sIChqc05hbWUpKSwgKGdlbmVyYXRvck5hbWUpKHZtKS52YWx1ZSgpLCAoYXR0cmlidXRlcykp
CiAKIC8vIEhlbHBlciBmb3IgZGVmaW5pbmcgbmF0aXZlIGdldHRlcnMgb24gcHJvcGVydGllcy4K
ICNkZWZpbmUgSlNDX05BVElWRV9JTlRSSU5TSUNfR0VUVEVSKGpzTmFtZSwgY3BwTmFtZSwgYXR0
cmlidXRlcywgaW50cmluc2ljKSAgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdElubGluZXMuaAppbmRleCA4OTJlMmNhNDVmOTdkZDZmMzJhNmEwZTY4YTE5MmUy
NmVlNTMxODBiLi5iNGI1NzBlYmNiNDI4MTliNzNkNjllZWViMGU4ZWMyMWVhODQ4YTFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaApAQCAt
MTQwLDggKzE0MCw5IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0Tm9uSW5kZXhQ
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiAgICAgd2hpbGUgKHRydWUp
IHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVJRFRhYmxlLmdldChv
YmplY3QtPnN0cnVjdHVyZUlEKCkpOwogICAgICAgICBpZiAoTElLRUxZKCFUeXBlSW5mbzo6b3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90KG9iamVjdC0+aW5saW5lVHlwZUZsYWdzKCkpKSkgewot
ICAgICAgICAgICAgaWYgKG9iamVjdC0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3Qodm0sIHN0
cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICAgICAgICAgIGlmIChvYmplY3QtPmdl
dE93bk5vbkluZGV4UHJvcGVydHlTbG90KGV4ZWMsIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBz
bG90KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IGJvb2wgaGFzU2xvdCA9IHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmdldE93
blByb3BlcnR5U2xvdChvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUu
Y3BwCmluZGV4IDc1YjBjMTFmMzZlMjZhN2JhNDkzNDE1ODU1MjYzOGI4MWUxNWYxZTIuLjg3ZmRh
M2FmOGQ5MzAzN2VhY2QyZGEyNjg3ZWEyNTA0MDc5NjZkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUu
Y3BwCkBAIC0zMzAsNyArMzMwLDcgQEAgdm9pZCBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICB0b1N0
cmluZ1RhZ0FjY2Vzc29yLT5zZXRHZXR0ZXIodm0sIGdsb2JhbE9iamVjdCwgdG9TdHJpbmdUYWdG
dW5jdGlvbik7CiAgICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nvcih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIHRvU3RyaW5nVGFnQWNjZXNzb3IsIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5
QXR0cmlidXRlOjpBY2Nlc3Nvcik7CiAKLSAgICBKU0Z1bmN0aW9uKiB2YWx1ZXNGdW5jdGlvbiA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdHlwZWRBcnJheVByb3RvdHlwZVZhbHVlc0NvZGVHZW5l
cmF0b3Iodm0pLCBnbG9iYWxPYmplY3QpOworICAgIEpTRnVuY3Rpb24qIHZhbHVlc0Z1bmN0aW9u
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0eXBlZEFycmF5UHJvdG90eXBlVmFsdWVzQ29kZUdl
bmVyYXRvcih2bSkudmFsdWUoKSwgZ2xvYmFsT2JqZWN0KTsKIAogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQ
dWJsaWNOYW1lKCksIHZhbHVlc0Z1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCB2YWx1ZXNGdW5jdGlvbiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKaW5kZXggOTY2YzcxZWIxMGE4YTg0ODQ3
ZTg3Y2I2MTIzZTQwODc1MTc4YmYwNi4uMjJkZGMxZmFjNTE2YmY0YTdhNzc4NmZlYmE3ZmIyZTg5
MjM1ZTg0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3Vw
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCkBAIC0z
Myw3ICszMyw3IEBAIHZvaWQgcmVpZnlTdGF0aWNBY2Nlc3NvcihWTSYgdm0sIGNvbnN0IEhhc2hU
YWJsZVZhbHVlJiB2YWx1ZSwgSlNPYmplY3QmIHRoaXNPYmplCiAgICAgaWYgKHZhbHVlLmFjY2Vz
c29yR2V0dGVyKCkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBudWxscHRyOwog
ICAgICAgICBpZiAodmFsdWUuYXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkJ1aWx0
aW4pCi0gICAgICAgICAgICBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdmFsdWUu
YnVpbHRpbkFjY2Vzc29yR2V0dGVyR2VuZXJhdG9yKCkodm0pLCBnbG9iYWxPYmplY3QpOworICAg
ICAgICAgICAgZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHZhbHVlLmJ1aWx0aW5B
Y2Nlc3NvckdldHRlckdlbmVyYXRvcigpKHZtKS52YWx1ZSgpLCBnbG9iYWxPYmplY3QpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIFN0cmluZyBnZXR0ZXJOYW1lID0gdHJ5TWFrZVN0cmlu
ZyhBU0NJSUxpdGVyYWwoImdldCAiKSwgU3RyaW5nKCpwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgp
KSk7CiAgICAgICAgICAgICBpZiAoIWdldHRlck5hbWUpCkBAIC00NSw4ICs0NSwxMCBAQCB2b2lk
IHJlaWZ5U3RhdGljQWNjZXNzb3IoVk0mIHZtLCBjb25zdCBIYXNoVGFibGVWYWx1ZSYgdmFsdWUs
IEpTT2JqZWN0JiB0aGlzT2JqZQogICAgIHRoaXNPYmplY3QucHV0RGlyZWN0Tm9uSW5kZXhBY2Nl
c3Nvcih2bSwgcHJvcGVydHlOYW1lLCBhY2Nlc3NvciwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2
YWx1ZS5hdHRyaWJ1dGVzKCkpKTsKIH0KIAotYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChW
TSYgdm0sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBjb25zdCBIYXNoVGFibGVWYWx1ZSog
ZW50cnksIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGNvbnN0IEhhc2hUYWJsZVZhbHVl
KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBBU1NFUlQodGhpc09iamVj
dC0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIEFTU0VSVChlbnRyeS0+YXR0cmlidXRlcygpICYgUHJv
cGVydHlBdHRyaWJ1dGU6OkJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5
KTsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwpAQCAtNTksNyArNjEsOCBAQCBib29sIHNldFVw
U3RhdGljRnVuY3Rpb25TbG90KFZNJiB2bSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGNv
bnN0IEhhc2hUYWJsZQogICAgICAgICBpZiAodGhpc09iamVjdC0+c3RhdGljUHJvcGVydGllc1Jl
aWZpZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZWlmeVN0YXRp
Y1Byb3BlcnR5KHZtLCBjbGFzc0luZm8sIHByb3BlcnR5TmFtZSwgKmVudHJ5LCAqdGhpc09iamVj
dCk7CisgICAgICAgIHJlaWZ5U3RhdGljUHJvcGVydHkodm0sIGNsYXNzSW5mbywgcHJvcGVydHlO
YW1lLCAqZW50cnksICp0aGlzT2JqZWN0LCBleGVjKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZmFsc2UpOwogCiAgICAgICAgIG9mZnNldCA9IHRoaXNPYmplY3QtPmdldERp
cmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgaWYgKCFp
c1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xvb2t1cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3Vw
LmgKaW5kZXggYmZlZTUxZTBiMWFjYjQ0NmEzNTA4MmI0NWJmMDFlOTM4YTY4OGFmNy4uMWE4MGFj
YTljYzkzNzgwYjMxNTUyOTEzZWQ2YjA4MDI3MDM0MGU3NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTG9va3VwLmgKQEAgLTMxLDEwICszMSwxMiBAQAogI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkxhenlQcm9wZXJ0
eS5oIgorI2luY2x1ZGUgIlBhcnNlckVycm9yLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlTbG90Lmgi
CiAjaW5jbHVkZSAiUHV0UHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiVHlwZUVycm9yLmgiCiAj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ3LDcgKzQ5LDcgQEAgc3RydWN0IENvbXBhY3RIYXNoSW5k
ZXggewogLy8gaWUuIHR5cGVkZWYgSlNWYWx1ZSAoKkdldEZ1bmN0aW9uKShFeGVjU3RhdGUqLCBK
U09iamVjdCogYmFzZU9iamVjdCkKIHR5cGVkZWYgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMg
R2V0RnVuY3Rpb247CiB0eXBlZGVmIFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jIFB1dEZ1
bmN0aW9uOwotdHlwZWRlZiBGdW5jdGlvbkV4ZWN1dGFibGUqICgqQnVpbHRpbkdlbmVyYXRvciko
Vk0mKTsKK3R5cGVkZWYgRXhwZWN0ZWQ8RnVuY3Rpb25FeGVjdXRhYmxlKiwgUGFyc2VyRXJyb3I+
ICgqQnVpbHRpbkdlbmVyYXRvcikoVk0mKTsKIHR5cGVkZWYgSlNWYWx1ZSAoKkxhenlQcm9wZXJ0
eUNhbGxiYWNrKShWTSYsIEpTT2JqZWN0Kik7CiAKIC8vIEhhc2ggdGFibGUgZ2VuZXJhdGVkIGJ5
IHRoZSBjcmVhdGVfaGFzaF90YWJsZSBzY3JpcHQuCkBAIC0yMDMsNyArMjA1LDcgQEAgc3RydWN0
IEhhc2hUYWJsZSB7CiAgICAgfQogfTsKIAotSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBzZXRVcFN0
YXRpY0Z1bmN0aW9uU2xvdChWTSYsIGNvbnN0IENsYXNzSW5mbyosIGNvbnN0IEhhc2hUYWJsZVZh
bHVlKiwgSlNPYmplY3QqIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CitKU19FWFBPUlRfUFJJVkFURSBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0
ZSosIGNvbnN0IENsYXNzSW5mbyosIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiwgSlNPYmplY3QqIHRo
aXNPYmplY3QsIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIHJlaWZ5U3RhdGljQWNjZXNzb3IoVk0mLCBjb25zdCBIYXNoVGFibGVWYWx1ZSYsIEpT
T2JqZWN0JiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUpOwogCiBpbmxpbmUgQnVpbHRpbkdlbmVy
YXRvciBIYXNoVGFibGVWYWx1ZTo6YnVpbHRpbkFjY2Vzc29yR2V0dGVyR2VuZXJhdG9yKCkgY29u
c3QKQEAgLTIyMCw3ICsyMjIsNyBAQCBpbmxpbmUgQnVpbHRpbkdlbmVyYXRvciBIYXNoVGFibGVW
YWx1ZTo6YnVpbHRpbkFjY2Vzc29yU2V0dGVyR2VuZXJhdG9yKCkgY29uc3QKICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxCdWlsdGluR2VuZXJhdG9yPihtX3ZhbHVlcy52YWx1ZTIpOwogfQog
Ci1pbmxpbmUgYm9vbCBnZXRTdGF0aWNQcm9wZXJ0eVNsb3RGcm9tVGFibGUoVk0mIHZtLCBjb25z
dCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgSGFzaFRhYmxlJiB0YWJsZSwgSlNPYmplY3Qq
IHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKK2lubGluZSBib29sIGdldFN0YXRpY1Byb3BlcnR5U2xvdEZyb21UYWJsZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBjb25zdCBIYXNoVGFibGUmIHRhYmxl
LCBKU09iamVjdCogdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIGlmICh0aGlzT2JqZWN0LT5zdGF0aWNQcm9wZXJ0aWVzUmVp
ZmllZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzAsNyArMjMyLDcgQEAgaW5saW5l
IGJvb2wgZ2V0U3RhdGljUHJvcGVydHlTbG90RnJvbVRhYmxlKFZNJiB2bSwgY29uc3QgQ2xhc3NJ
bmZvKiBjbGFzc0luZm8sIGMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGVudHJ5
LT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbk9yRnVuY3Rpb25PckFj
Y2Vzc29yT3JMYXp5UHJvcGVydHkpCi0gICAgICAgIHJldHVybiBzZXRVcFN0YXRpY0Z1bmN0aW9u
U2xvdCh2bSwgY2xhc3NJbmZvLCBlbnRyeSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKKyAgICAgICAgcmV0dXJuIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KGV4ZWMsIGNsYXNzSW5m
bywgZW50cnksIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICBpZiAoZW50
cnktPmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIpIHsK
ICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJl
KGVudHJ5LT5hdHRyaWJ1dGVzKCkpLCBqc051bWJlcihlbnRyeS0+Y29uc3RhbnRJbnRlZ2VyKCkp
KTsKQEAgLTMxOSwxMyArMzIxLDE5IEBAIGlubGluZSBib29sIGxvb2t1cFB1dChFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBiYXNlCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWlubGluZSB2b2lkIHJlaWZ5U3RhdGljUHJvcGVydHkoVk0mIHZtLCBj
b25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5h
bWUsIGNvbnN0IEhhc2hUYWJsZVZhbHVlJiB2YWx1ZSwgSlNPYmplY3QmIHRoaXNPYmopCitpbmxp
bmUgdm9pZCByZWlmeVN0YXRpY1Byb3BlcnR5KFZNJiB2bSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFz
c0luZm8sIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBjb25zdCBIYXNoVGFibGVW
YWx1ZSYgdmFsdWUsIEpTT2JqZWN0JiB0aGlzT2JqLCBFeGVjU3RhdGUqIGV4ZWMgPSBudWxscHRy
KQogeworICAgIEFTU0VSVCgmdm0gPT0gJihleGVjLT52bSgpKSk7CiAgICAgaWYgKHZhbHVlLmF0
dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpCdWlsdGluKSB7CiAgICAgICAgIGlmICh2
YWx1ZS5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpCiAgICAgICAg
ICAgICByZWlmeVN0YXRpY0FjY2Vzc29yKHZtLCB2YWx1ZSwgdGhpc09iaiwgcHJvcGVydHlOYW1l
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpc09iai5wdXREaXJlY3RCdWlsdGluRnVu
Y3Rpb24odm0sIHRoaXNPYmouZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgdmFsdWUuYnVp
bHRpbkdlbmVyYXRvcigpKHZtKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1
dGVzKCkpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBFeHBlY3RlZDxGdW5jdGlvbkV4
ZWN1dGFibGUqLCBQYXJzZXJFcnJvcj4gZiA9IHZhbHVlLmJ1aWx0aW5HZW5lcmF0b3IoKSh2bSk7
CisgICAgICAgICAgICBpZiAoZi5oYXNfdmFsdWUoKSkKKyAgICAgICAgICAgICAgICB0aGlzT2Jq
LnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2bSwgdGhpc09iai5nbG9iYWxPYmplY3QoKSwgcHJv
cGVydHlOYW1lLCBmLnZhbHVlKCksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUodmFsdWUuYXR0cmli
dXRlcygpKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZi5lcnJvcigpLnRo
cm93U3RhY2tPdmVyZmxvd09yT3V0T2ZNZW1vcnkoZXhlYyk7CisgICAgICAgIH0KICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFBy
b3RvdHlwZS5jcHAKaW5kZXggNTM1NjhiN2EzYWFlNGIxMjZjY2UzMzlkMzJkMDQ3MGVlYTc2YTE4
My4uZmUyYjZiZWUxMzIwY2IyNTU3YTdkZTUzMmZmZDk4MDRkYjMyNWRhYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCkBAIC03MSw3ICs3MSw3
IEBAIHZvaWQgTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lU
SE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldFByaXZh
dGVOYW1lKCksIG1hcFByb3RvRnVuY0dldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIDEsIEpTTWFwR2V0SW50cmluc2ljKTsKICAgICBKU0NfTkFU
SVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuc2V0UHJpdmF0ZU5hbWUoKSwgbWFwUHJvdG9GdW5jU2V0LCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMiwgSlNNYXBT
ZXRJbnRyaW5zaWMpOwogCi0gICAgSlNGdW5jdGlvbiogZW50cmllcyA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgbWFwUHJvdG90eXBlRW50cmllc0NvZGVHZW5lcmF0b3Iodm0pLCBnbG9iYWxPYmpl
Y3QpOworICAgIEpTRnVuY3Rpb24qIGVudHJpZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIG1h
cFByb3RvdHlwZUVudHJpZXNDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpLCBnbG9iYWxPYmplY3Qp
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpLCBlbnRyaWVzLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBlbnRy
aWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRv
U3RyaW5nVGFnU3ltYm9sLCBqc1N0cmluZygmdm0sICJNYXAiKSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCmluZGV4IDI5MzQzOTYwODdlNjhi
ZjM4YzkxODczMTgwNGY2ZjZlNzBiMDdkNmMuLmYyZjA1ZTNmZjBmZTRjM2FiOWYyY2I2YmUwNTI5
YTQ0MGMyZmQ4NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nl
dFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJv
dG90eXBlLmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFNldFByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJ
VkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5oYXNQcml2YXRlTmFtZSgpLCBzZXRQcm90b0Z1bmNIYXMsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxLCBKU1NldEhh
c0ludHJpbnNpYyk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFkZFByaXZhdGVOYW1l
KCksIHNldFByb3RvRnVuY0FkZCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIDEsIEpTU2V0QWRkSW50cmluc2ljKTsKIAotICAgIEpTRnVuY3Rpb24q
IHZhbHVlcyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgc2V0UHJvdG90eXBlVmFsdWVzQ29kZUdl
bmVyYXRvcih2bSksIGdsb2JhbE9iamVjdCk7CisgICAgSlNGdW5jdGlvbiogdmFsdWVzID0gSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBzZXRQcm90b3R5cGVWYWx1ZXNDb2RlR2VuZXJhdG9yKHZtKS52
YWx1ZSgpLCBnbG9iYWxPYmplY3QpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCksIHZh
bHVlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkp
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5rZXlzUHVibGljTmFtZSgpLCB2YWx1ZXMsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIHZhbHVlcywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IDc3ZjYwMzk1Y2Y2
YTk0MjZjMTY2MGJlMGViODAxZWY2NmNhYzc0YmUuLjM2ZGJkNGYyNmM0MGRiZGMxMGQ3ZTM5MTRm
ZWIwN2I5MjQzNWIyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9K
U0RvbGxhclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJW
TS5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJK
U0RvbGxhclZNLmgiCiAKLSNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuaCIKKyNp
bmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNp
bmNsdWRlICJET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJET01KSVRHZXR0
ZXJTZXR0ZXIuaCIKQEAgLTE1MjIsOSArMTUyMiw4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlQnVpbHRpbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UgPSBtYWtlU291cmNlKGZ1bmN0aW9uVGV4dCwgeyB9KTsKLSAg
ICBKU0Z1bmN0aW9uKiBmdW5jID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjcmVhdGVCdWlsdGlu
RXhlY3V0YWJsZSh2bSwgc291cmNlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImZvbyIp
LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVj
dCktPmxpbmsodm0sIHNvdXJjZSksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0KLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZ1bmMpOworICAgIGF1dG8gdW5saW5rZWQgPSBCdWls
dGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGVPckNyYXNoKHZtLCBzb3VyY2UsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiZm9vIiksIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgQ29u
c3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdW5saW5rZWQtPmxpbmsodm0sIHNvdXJjZSksIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVJvb3QoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVD
b25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0
cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwCmluZGV4IGNhOTdlOTYxMWQwMzIyYjY1MmRjY2U0
ZjZlZjk4ZTQ4YTJkNzMzNmQuLjE0YzJiY2RlNjkyNTdiYWMyNDE2ZGJlN2EzYzNhZDZiZDNiZGJi
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJl
YW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKQEAgLTEyNCwyNyArMTI0
LDI3IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTQnVpbHRpblJlYWRhYmxlU3RyZWFt
QllPQlJlcXVlc3RQcml2YXRlQ29uc3RydWN0b3I6CiAKIHRlbXBsYXRlPD4gRnVuY3Rpb25FeGVj
dXRhYmxlKiBKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXJQcml2YXRlQ29uc3Ry
dWN0b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKEpTQzo6Vk0mIHZtKQogewotICAgIHJldHVybiBy
ZWFkYWJsZVN0cmVhbUludGVybmFsc1ByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1EZWZh
dWx0UmVhZGVyQ29kZUdlbmVyYXRvcih2bSk7CisgICAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtSW50
ZXJuYWxzUHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXJDb2RlR2Vu
ZXJhdG9yKHZtKS52YWx1ZSgpOwogfQogCiB0ZW1wbGF0ZTw+IEZ1bmN0aW9uRXhlY3V0YWJsZSog
SlNCdWlsdGluUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlclByaXZhdGVDb25zdHJ1Y3Rv
cjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUoSlNDOjpWTSYgdm0pCiB7Ci0gICAgcmV0dXJuIHJlYWRh
YmxlU3RyZWFtSW50ZXJuYWxzUHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZVN0cmVhbURlZmF1bHRD
b250cm9sbGVyQ29kZUdlbmVyYXRvcih2bSk7CisgICAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtSW50
ZXJuYWxzUHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyQ29k
ZUdlbmVyYXRvcih2bSkudmFsdWUoKTsKIH0KIAogdGVtcGxhdGU8PiBGdW5jdGlvbkV4ZWN1dGFi
bGUqIEpTQnVpbHRpblJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXJQcml2YXRlQ29uc3RydWN0
b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKEpTQzo6Vk0mIHZtKQogewotICAgIHJldHVybiByZWFk
YWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNQcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxlQnl0ZVN0cmVh
bUNvbnRyb2xsZXJDb2RlR2VuZXJhdG9yKHZtKTsKKyAgICByZXR1cm4gcmVhZGFibGVCeXRlU3Ry
ZWFtSW50ZXJuYWxzUHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVy
Q29kZUdlbmVyYXRvcih2bSkudmFsdWUoKTsKIH0KIAogdGVtcGxhdGU8PiBGdW5jdGlvbkV4ZWN1
dGFibGUqIEpTQnVpbHRpblJlYWRhYmxlU3RyZWFtQllPQlJlYWRlclByaXZhdGVDb25zdHJ1Y3Rv
cjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUoSlNDOjpWTSYgdm0pCiB7Ci0gICAgcmV0dXJuIHJlYWRh
YmxlQnl0ZVN0cmVhbUludGVybmFsc1ByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1CWU9C
UmVhZGVyQ29kZUdlbmVyYXRvcih2bSk7CisgICAgcmV0dXJuIHJlYWRhYmxlQnl0ZVN0cmVhbUlu
dGVybmFsc1ByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyQ29kZUdlbmVy
YXRvcih2bSkudmFsdWUoKTsKIH0KIAogdGVtcGxhdGU8PiBGdW5jdGlvbkV4ZWN1dGFibGUqIEpT
QnVpbHRpblJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3RQcml2YXRlQ29uc3RydWN0b3I6OmluaXRp
YWxpemVFeGVjdXRhYmxlKEpTQzo6Vk0mIHZtKQogewotICAgIHJldHVybiByZWFkYWJsZUJ5dGVT
dHJlYW1JbnRlcm5hbHNQcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3RD
b2RlR2VuZXJhdG9yKHZtKTsKKyAgICByZXR1cm4gcmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxz
UHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0Q29kZUdlbmVyYXRvcih2
bSkudmFsdWUoKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZVJlYWRhYmxlU3RyZWFtRGVmYXVsdFJl
YWRlclByaXZhdGVDb25zdHJ1Y3RvcihWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCmluZGV4IGM0ZjUxMjhkMTA4ZmM3NGI4ZmI0NTFlYmNjZTNlODgzZWFkMmY3ZDEu
LjYzYjA1OTNjYjM4M2FlYTY1Mzk0Y2U5YThhM2UyY2VkYWRmNjEwZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC03MTcz
LDcgKzcxNzMsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICBp
ZiAoSXNKU0J1aWx0aW5Db25zdHJ1Y3RvcigkaW50ZXJmYWNlKSkgewogICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICJ0ZW1wbGF0ZTw+IEZ1bmN0aW9uRXhlY3V0YWJsZSogJHtjb25zdHJ1Y3Rv
ckNsYXNzTmFtZX06OmluaXRpYWxpemVFeGVjdXRhYmxlKFZNJiB2bSlcbiIpOwogICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIHJldHVybiAiIC4gR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lRnJvbVN0cmluZygkaW50ZXJm
YWNlLT50eXBlLT5uYW1lLCAiaW5pdGlhbGl6ZSIgLiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lKSAu
ICIodm0pO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gIiAu
IEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFtZUZyb21TdHJpbmcoJGludGVyZmFjZS0+dHlwZS0+bmFt
ZSwgImluaXRpYWxpemUiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSkgLiAiKHZtKS52YWx1ZSgp
O1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cbiIpOwogICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICJcbiIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCmluZGV4IDFhYzZlYWI2NDllZjIyMDc3
NjRiMmMyNGQ4NzU5YzJlM2YyYjQzOGYuLmUwYjE2MDhiZDA1NDYyNjIxYmViNTQwNjVhYzY0MDVm
N2NkYjlkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yLmNwcApAQCAtODIsNyArODIsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3Bl
cgogCiB0ZW1wbGF0ZTw+IEZ1bmN0aW9uRXhlY3V0YWJsZSogSlNUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUoVk0mIHZtKQog
ewotICAgIHJldHVybiB0ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JJbml0aWFsaXpl
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29kZUdlbmVyYXRvcih2bSk7CisgICAg
cmV0dXJuIHRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckluaXRpYWxpemVUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpOwogfQog
CiB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3RvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAppbmRleCBlMmFlNWJk
OGE0M2NjMWRjOTU3NGJiNjNmYTRmMzY1ZmZhMzYxNjUyLi44MjUzYmFiZjIxNThiMmMyOGY3OWJk
YWUwZjYwMGI4ZTNkYmM5YjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJgogCiB0ZW1w
bGF0ZTw+IEZ1bmN0aW9uRXhlY3V0YWJsZSogSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25z
dHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUoVk0mIHZtKQogewotICAgIHJldHVybiB0ZXN0
SlNCdWlsdGluQ29uc3RydWN0b3JJbml0aWFsaXplVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29k
ZUdlbmVyYXRvcih2bSk7CisgICAgcmV0dXJuIHRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckluaXRp
YWxpemVUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpOwog
fQogCiB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH07CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0No
YW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIzMTc3MjExZDhlNmI4ZDIzMGE1NGRi
ZWQ3MzgwZmY4MTlhNmYyOTEuLmFmZDZkN2ViNDZhOTgyNWUyMGZmODQxNDM3Yjk4NmJhOGMyYzkx
MWEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMDMtMjkgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0
QGFwcGxlLmNvbT4KKworICAgICAgICBBIHN0YWNrIG92ZXJmbG93IGluIHRoZSBwYXJzaW5nIG9m
IGEgYnVpbHRpbiAoY2FsbGVkIGJ5IGNyZWF0ZUV4ZWN1dGFibGUpIGNhdXNlIGEgY3Jhc2ggaW5z
dGVhZCBvZiBhIGNhdGNoYWJsZSBqcyBleGNlcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDA3NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzcxNjU4OTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBzdHJlc3Mvc3RhY2stb3ZlcmZsb3ctd2hpbGUtcGFyc2luZy1idWlsdGluLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGYpOgorCiAyMDE4LTAzLTI4ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3Nl
dEBhcHBsZS5jb20+CiAKICAgICAgICAgYXBwZW5kUXVvdGVkSlNPTlN0cmluZyBzdG9wcyBvbiBh
cml0aG1ldGljIG92ZXJmbG93IGluc3RlYWQgb2YgcHJvcGFnYXRpbmcgaXQgdXB3YXJkcwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc3RhY2stb3ZlcmZsb3ctd2hpbGUtcGFyc2luZy1idWls
dGluLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc3RhY2stb3ZlcmZsb3ctd2hpbGUtcGFyc2luZy1idWls
dGluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJiOTlhMTcyZjQzZWI3ZTYyNjdkNTFjYzZkZTkxYjY1YThjZjZk
NjEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zdGFjay1vdmVyZmxvdy13aGls
ZS1wYXJzaW5nLWJ1aWx0aW4uanMKQEAgLTAsMCArMSwxMSBAQAorZnVuY3Rpb24gZigpIHsKKyAg
ICB0cnkgeworICAgICAgICBmKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0cnkgewor
ICAgICAgICAgICAgTWFwLnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoJycsIHt9KTsKKyAgICAgICAg
fSBjYXRjaCB7fQorICAgIH0KK30KKworZigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336775</attachid>
            <date>2018-03-29 08:41:36 -0700</date>
            <delta_ts>2018-03-30 02:02:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184074-20180329174134.patch</filename>
            <type>text/plain</type>
            <size>78707</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
OGEwYzhmOGE5MjVlZjVlYmY4YWIxNDUzMTU1Zjc3MmZjNzJmMzVkLi5iMDk2ZmQ5YmU3ZDE0Nzc4
NTY5YmQ2OTQ4MjMxZDcwODM5ZjQwMmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NCBAQAorMjAxOC0wMy0yOSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUu
Y29tPgorCisgICAgICAgIEEgc3RhY2sgb3ZlcmZsb3cgaW4gdGhlIHBhcnNpbmcgb2YgYSBidWls
dGluIChjYWxsZWQgYnkgY3JlYXRlRXhlY3V0YWJsZSkgY2F1c2UgYSBjcmFzaCBpbnN0ZWFkIG9m
IGEgY2F0Y2hhYmxlIGpzIGV4Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MDc0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNzE2NTg5
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhp
bmcgdGhpcyByZXF1aXJlcyBnZXR0aW5nIHRoZSBQYXJzZXJFcnJvciAod2l0aCBpbmZvcm1hdGlv
biBhYm91dCB0aGUgZmFpbHVyZSkgYW5kIGFuIEV4ZWNTdGF0ZSogKHRvIHRocm93IGFuIGV4Y2Vw
dGlvbikgaW4gdGhlIHNhbWUgcGxhY2UuCisgICAgICAgIEl0IGlzIHN1cnByaXNpbmdseSBwYWlu
ZnVsLCB3aXRoIHF1aXRlIGEgbG9uZyBjYWxsIHN0YWNrIGJldHdlZW4gdGhlIGxhc3QgZnVuY3Rp
b24gd2l0aCBhbiBhY2Nlc3MgdG8gYW4gRXhlY1N0YXRlKiBhbmQgdGhlIGZpcnN0IGZ1bmN0aW9u
IHdpdGggdGhlIFBhcnNlckVycm9yLgorICAgICAgICBFdmVuIHdvcnNlLCBtYW55IG9mIHRoZXNl
IGZ1bmN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IG1hY3JvcywgdGhlbXNlbHZlcyBnZW5lcmF0ZWQg
YnkgYSBtYXplIG9mIHB5dGhvbiBzY3JpcHRzLgorICAgICAgICBBcyBhIHJlc3VsdCwgdGhpcyBw
YXRjaCBpcyBncm90ZXNxdWVseSBsYXJnZSwgd2hpbGUgYWxsIGl0IGRvZXMgaXMgYWRkaW5nIGVu
b3VnaCBwbHVtYmluZyB0byB0aHJvdyBhIHByb3BlciBleGNlcHRpb24gaW4gdGhpcyBzcGVjaWZp
YyBjYXNlLgorCisgICAgICAgIFRoZXJlIGFyZSBub3cgYmFyZSBjYWxscyB0byAnLnZhbHVlKCkn
IG9uIHNldmVyYWwgcGF0aHMgdGhhdCBtYXkgY3Jhc2guIEl0IGlzIG5vdCBhIHByb2JsZW0gaW4g
bXkgb3Bpbmlvbiwgc2luY2Ugd2UgcHJldmlvdXNseSBjcmFzaGVkIGluIGV2ZXJ5IGNhc2UgcmVn
YXJkbGVzcyBvZiB0aGUgcGF0aCB0aGF0IHRvb2sgdXMgdG8gY3JlYXRlRXhlY3V0YWJsZSB3aGVu
IGVuY291bnRlcmluZyBhIHN0YWNrIG92ZXJmbG93LgorICAgICAgICBJZiB3ZSBldmVyIGZpbmQg
YW4gZXhhbXBsZSB0aGF0IGNhbiBjYXVzZSB0aGVzZSBjYWxscyB0byBmYWlsLCBpdCBzaG91bGQg
YmUgZG9hYmxlIHRvIHRocm93IGEgcHJvcGVyIGV4Y2VwdGlvbiB0aGVyZSB0b28uCisKKyAgICAg
ICAgVHdvIG90aGVyIG1pbm9yIGNoYW5nZXM6CisgICAgICAgIC0gSSByZW1vdmVkIEJ1aWx0aW5F
eGVjdXRhYmxlQ3JlYXRvci57Y3BwLCBofSBhcyBpdCB3YXMgbmVhcmx5IGVtcHR5LCBhbmQgb25s
eSB1c2VkIGluIG9uZSBwbGFjZS4gVGhhdCBwbGFjZSBub3cgaW5jbHVkZXMgQnVpbHRpbkV4ZWN1
dGFibGVzLmggZGlyZWN0bHkgaW5zdGVhZC4KKyAgICAgICAgLSBJIG1vdmVkIGNvZGUgZnJvbSBQ
YXJzZXJFcnJvci5oIGludG8gYSBuZXdseSBjcmVhdGVkIFBhcnNlckVycm9yLmNwcCwgYXMgSSBz
ZWUgbm8gbmVlZCB0byBpbmxpbmUgZnVuY3Rpb25zIHRoYXQgYXJlIG9ubHkgdXNlZCB3aGVuIGVu
Y291bnRlcmluZyBhIHBhcnNlciBlcnJvciwgYW5kIFBhcnNlckVycm9yLmggaXMgbm93IGluY2x1
ZGVkIGluIHF1aXRlIGEgZmV3IHBsYWNlcy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWls
dGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHk6CisgICAgICAgIChCdWlsdGluc0NvbWJp
bmVkSGVhZGVyR2VuZXJhdG9yLmdlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKToKKyAgICAg
ICAgKFBhcnNlckVycm9yKToKKyAgICAgICAgKGdlbmVyYXRlX3NlY3Rpb25fZm9yX29iamVjdCk6
IERlbGV0ZWQuCisgICAgICAgIChnZW5lcmF0ZV9leHRlcm5zX2Zvcl9vYmplY3QpOiBEZWxldGVk
LgorICAgICAgICAoZ2VuZXJhdGVfbWFjcm9zX2Zvcl9vYmplY3QpOiBEZWxldGVkLgorICAgICAg
ICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV90YWJsZV9tYWNybyk6IERlbGV0ZWQuCisgICAg
ICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX25hbWVfbWFjcm8pOiBEZWxldGVkLgorICAg
ICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3JfZ2xvYmFsX3ByaXZhdGVfY29kZV9uYW1lX21hY3Jv
KTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRl
X3NlcGFyYXRlX2hlYWRlci5weToKKyAgICAgICAgKGdlbmVyYXRlX3NlY29uZGFyeV9oZWFkZXJf
aW5jbHVkZXMpOgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVz
LnB5OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlQ3JlYXRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVDcmVhdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVh
dGVEZWZhdWx0Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6
OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlQnVpbHRpbkV4
ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1
dGFibGVPckNyYXNoKToKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVF
eGVjdXRhYmxlKToKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaDoKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyRXJyb3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UGFyc2VyRXJyb3I6OnRv
RXJyb3JPYmplY3QpOgorICAgICAgICAoSlNDOjpQYXJzZXJFcnJvcjo6dGhyb3dTdGFja092ZXJm
bG93T3JPdXRPZk1lbW9yeSk6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAg
ICAqIHBhcnNlci9QYXJzZXJFcnJvci5oOgorICAgICAgICAoSlNDOjpQYXJzZXJFcnJvcjo6dG9F
cnJvck9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OkFzeW5jSXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25Qcm90b3R5cGU6OmFkZEZ1bmN0aW9uUHJvcGVydGllcyk6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmdldE93blN0YXRpY1Byb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpyZWlm
eUFsbFN0YXRpY1Byb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXROb25JbmRleFByb3BlcnR5U2xvdCk6
CisgICAgICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvTG9va3VwLmNwcDoKKyAgICAgICAgKEpTQzo6cmVpZnlTdGF0aWNBY2Nl
c3Nvcik6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGljRnVuY3Rpb25TbG90KToKKyAgICAgICAg
KiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNQcm9wZXJ0eVNsb3RG
cm9tVGFibGUpOgorICAgICAgICAoSlNDOjpyZWlmeVN0YXRpY1Byb3BlcnR5KToKKyAgICAgICAg
KiBydW50aW1lL01hcFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcFByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6U2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogdG9v
bHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlQnVpbHRpbik6
CisKIDIwMTgtMDMtMjkgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzAwNjIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWVlMDAyN2MwNmQ0MzkzODI4MDA2ZmUzNjk3YjgwYjc3MDEwY2Q0OC4uMGY1MTY5NzczOWZjN2Yw
YTljNjAxZDJmYjAwMjNhMWY5MmMwZTEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisy
MDE4LTAzLTI5ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAg
ICAgQSBzdGFjayBvdmVyZmxvdyBpbiB0aGUgcGFyc2luZyBvZiBhIGJ1aWx0aW4gKGNhbGxlZCBi
eSBjcmVhdGVFeGVjdXRhYmxlKSBjYXVzZSBhIGNyYXNoIGluc3RlYWQgb2YgYSBjYXRjaGFibGUg
anMgZXhjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODQwNzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM3MTY1ODk3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkgaGFkIHRvIHNsaWdodGx5
IGNoYW5nZSB0aGUgdHlwZSBvZiBzb21lIGJpbmRpbmdzIGJldHdlZW4gSlNDIGFuZCBXZWJDb3Jl
LiBObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCBvbiB0aGUgV2ViQ29yZSBzaWRlLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNCdWlsdGluUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVh
ZGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyUHJpdmF0ZUNv
bnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0J1
aWx0aW5SZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0
aWFsaXplRXhlY3V0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0J1aWx0aW5SZWFkYWJsZVN0
cmVhbUJZT0JSZWFkZXJQcml2YXRlQ29uc3RydWN0b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQnVpbHRpblJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3RQcml2
YXRlQ29uc3RydWN0b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0
b3JIZWxwZXJNZXRob2RzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6
ZUV4ZWN1dGFibGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZSk6CisKIDIwMTgt
MDMtMjkgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzAwNjIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDc1NDhiYWMyMzdmMDI4ODU5MTA1MzFlMjhmMGM0ZDdjOTljYjdhODUuLjk5NDg1
NzRkYTVlYjZkMWQzNjgyODliZDNiOWRjNmQ2NmQ4MjZmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xNjc1LDcgKzE2NzUsNiBAQAogCQlEQ0YzRDU2RDFDRDI5NDc2MDAzRDVD
NjUgLyogTGF6eVByb3BlcnR5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRENGM0Q1NjgxQ0QyOTQ2ODAwM0Q1QzY1IC8qIExhenlQcm9wZXJ0
eUlubGluZXMuaCAqLzsgfTsKIAkJRENGREZCRDkxRDFGNUQ5QjAwRkUzRDcyIC8qIEIzQm90dG9t
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IERDRkRGQkQ3MUQxRjVEOTgwMEZFM0Q3MiAvKiBCM0JvdHRvbVByb3ZpZGVyLmggKi87IH07CiAJ
CURDRkRGQkRBMUQxRjVEOUUwMEZFM0Q3MiAvKiBCM1R5cGVNYXAuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRkRGQkQ4MUQxRjVEOTgwMEZFM0Q3MiAv
KiBCM1R5cGVNYXAuaCAqLzsgfTsKLQkJREUyNkU5MDMxQ0I1REQwNTAwRDJCRTgyIC8qIEJ1aWx0
aW5FeGVjdXRhYmxlQ3JlYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gREUyNkU5MDIxQ0I1REQwNTAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxl
Q3JlYXRvci5oICovOyB9OwogCQlERUE3RTI0NTFCQkM2NzdGMDBENzg0NDAgLyogSlNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTM5MTdFN0MxQjc5MTEwNjAwMEVCRDMzIC8qIEpTVHlwZWRBcnJheVZpZXdQcm90
b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMTI0QThGNzBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjRBOEY1MEU1NTU3NzUwMDMw
OTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUzMTYxODEzMUVDNUZFMTcwMDA2QTIxOCAvKiBET01Bbm5vdGF0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE2
MTgxMDFFQzVGRTA4MDAwNkEyMTggLyogRE9NQW5ub3RhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zMTYyLDYgKzMxNjEsNyBAQAogCQkx
Q0FBOEI0QTBEMzJDMzlBMDA0MUJDRkYgLyogSmF2YVNjcmlwdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDQUE4QjRCMEQzMkMzOUEwMDQxQkNGRiAvKiBKYXZhU2NyaXB0Q29yZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyMEVDQjE1RUZDNTI0NjI0QkMyRjAyRDUgLyogTW9kdWxlTmFtZXNw
YWNlQWNjZXNzQ2FzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
b2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMjIwQzYwQzYyMDZDRUFCRDAwRkM0NjM3IC8qIFBhcnNlckVycm9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBhcnNlckVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MjYwMEI1QTQxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU3RyaW5nSm9pbmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5n
Sm9pbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nSm9pbmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2MkQ4NUI0MUMwRDY1MEYwMDZBQ0I2
MSAvKiBBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcDsgcGF0aCA9
IGIzL2Fpci9BaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNDUxMyw4ICs0NTEzLDYgQEAKIAkJRENGM0Q1NjgxQ0QyOTQ2ODAwM0Q1
QzY1IC8qIExhenlQcm9wZXJ0eUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTGF6eVByb3BlcnR5SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlEQ0ZERkJENzFEMUY1RDk4MDBGRTNENzIgLyogQjNCb3R0b21Qcm92aWRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0JvdHRvbVByb3ZpZGVyLmg7IHBhdGggPSBiMy9C
M0JvdHRvbVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDRkRGQkQ4
MUQxRjVEOTgwMEZFM0Q3MiAvKiBCM1R5cGVNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQjNUeXBlTWFwLmg7IHBhdGggPSBiMy9CM1R5cGVNYXAuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJREUyNkU5MDIxQ0I1REQwNTAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVj
dXRhYmxlQ3JlYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWlsdGlu
RXhlY3V0YWJsZUNyZWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJREUyNkU5
MDYxQ0I1REQ5NjAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdWlsdGluRXhlY3V0YWJsZUNyZWF0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERTVBMDlGRjFCQTNBQzNFMDAzRDQ0
MjQgLyogSW50cmluc2ljRW1pdHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbnRyaW5zaWNFbWl0dGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wYXF1ZUpTU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUxMjRBOEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmlu
Zy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcGFxdWVKU1N0cmlu
Zy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MzY0LDYgKzYzNjIsNyBAQAog
CQkJCTkzRjBCM0FBMDlCQjREQzAwMDY4RkNFMyAvKiBQYXJzZXIuaCAqLywKIAkJCQk5MzA1MkMz
MjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovLAogCQkJCTkzMDUyQzMzMEZC
NzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5oICovLAorCQkJCTIyMEM2MEM2MjA2Q0VBQkQw
MEZDNDYzNyAvKiBQYXJzZXJFcnJvci5jcHAgKi8sCiAJCQkJMEZDQ0FFNDMxNkQwQ0Y2RTAwRDBD
NjVCIC8qIFBhcnNlckVycm9yLmggKi8sCiAJCQkJOUI0OTU0RTgxQTY2NDBEQjAwMjgxNUE2IC8q
IFBhcnNlckZ1bmN0aW9uSW5mby5oICovLAogCQkJCUE3N0YxODI0MTY0MTkyNTQwMDY0MEE0NyAv
KiBQYXJzZXJNb2Rlcy5oICovLApAQCAtNzkxOCw4ICs3OTE3LDYgQEAKIAkJCQk1QjgyNDMwNDFE
QjdBQTQ5MDBFQTYzODQgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcyAqLywKIAkJCQk4QkMw
NjQ4MjFFMTgwQjRBMDBCMkI4Q0EgLyogQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuanMgKi8sCiAJ
CQkJOEJDMDY0OTUxRTFEODM4QjAwQjJCOENBIC8qIEFzeW5jSXRlcmF0b3JQcm90b3R5cGUuanMg
Ki8sCi0JCQkJREUyNkU5MDYxQ0I1REQ5NjAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3Jl
YXRvci5jcHAgKi8sCi0JCQkJREUyNkU5MDIxQ0I1REQwNTAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVj
dXRhYmxlQ3JlYXRvci5oICovLAogCQkJCUE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWls
dGluRXhlY3V0YWJsZXMuY3BwICovLAogCQkJCUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBC
dWlsdGluRXhlY3V0YWJsZXMuaCAqLywKIAkJCQlFMzgwRDY2QjFGMTkyNDlEMDBBNTkwOTUgLyog
QnVpbHRpbk5hbWVzLmNwcCAqLywKQEAgLTgzNTEsNyArODM0OCw2IEBACiAJCQkJOUI0Njk0Mzkx
Rjk3NDM5RTAwQ0NCM0Y5IC8qIEJvb2xlYW5Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk5NkI3MzE5MUJEQTA2ODAwMDMzMUI4NCAvKiBCb29sZWFuUHJvdG90eXBlLmx1dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkVBMDg2MjAxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCBp
biBIZWFkZXJzICovLAotCQkJCURFMjZFOTAzMUNCNUREMDUwMEQyQkU4MiAvKiBCdWlsdGluRXhl
Y3V0YWJsZUNyZWF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2
QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NUVFOUIy
MThBQUI3RTIwMEFBRDA0MyAvKiBCdWlsdGluTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5
REEwMEE2MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGlucy5weSBpbiBIZWFkZXJzICovLApAQCAt
OTA0NCw3ICs5MDQwLDYgQEAKIAkJCQlBNTAzRkExRTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDEzQ0E4QzFC
NDkxQTk0MDBDQUU2MTMgLyogSlNKb2IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE2MEUx
NkY1Q0QwMEIzNDQ2MCAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJN0E5Nzc0QTgyMDZCODJFNDAwOEQwM0QwIC8qIEpTV2Vha1ZhbHVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzE4QzQyMzBFMTZGNUNEMDBCMzQ0NjAgLyogSlNMb2NrLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDMjVENzA5QzE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJBNEJCN0YzMThBNDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1
ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTkxMTYsNiArOTExMSw3IEBACiAJCQkJQTc0
ODJCOTMxMTY3MTE0NzAwM0IwNzEyIC8qIEpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMEIyODZCMUVCOEU2Q0YwMDBFQjVEMiAvKiBKU1dlYWtQcml2YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDlGQjg2ODFBRTMzNUM2MDAzOUQwNjkgLyogSlNXZWFr
U2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QTk3NzRBODIwNkI4MkU0MDA4RDAzRDAgLyogSlNX
ZWFrVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUFENUMzNkVCMUY3NUFENzMwMDBCQ0FBRiAv
KiBKU1dlYkFzc2VtYmx5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDlFODUyRjFFOEEwQzdDMDA4
REUzOUUgLyogSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlF
RkQ0ODQxRUJDMDQ1QzAwRjNERkVBIC8qIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5
cGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaGVhZGVyLnB5IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29t
YmluZWRfaGVhZGVyLnB5CmluZGV4IGNkZTM1N2NkNDM5Y2VhZjQ0NjQyOGU2ODE4ODQ3ODA3M2Mw
M2M0OWQuLjcyMTRjZGFhNTk0M2I4YmNjYWMzM2UyYzA3ZjlmZjNlYzEyNzdkOTQgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVy
YXRlX2NvbWJpbmVkX2hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkKQEAgLTY2LDEy
ICs2NiwxNyBAQCBjbGFzcyBCdWlsdGluc0NvbWJpbmVkSGVhZGVyR2VuZXJhdG9yKEJ1aWx0aW5z
R2VuZXJhdG9yKToKICAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQogCiAgICAg
ZGVmIGdlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKHNlbGYpOgotICAgICAgICByZXR1cm4g
IiIibmFtZXNwYWNlIEpTQyB7CisgICAgICAgIHJldHVybiAiIiIKKyNpbmNsdWRlIDx3dGYvRXhw
ZWN0ZWQuaD4KKworbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBj
bGFzcyBWTTsKK2NsYXNzIFBhcnNlckVycm9yOwogCiBlbnVtIGNsYXNzIENvbnN0cnVjdEFiaWxp
dHkgOiB1bnNpZ25lZDsKLX0iIiIKK30KKyIiIgogCiAgICAgZGVmIGdlbmVyYXRlX3NlY3Rpb25f
Zm9yX29iamVjdChzZWxmLCBvYmplY3QpOgogICAgICAgICBsaW5lcyA9IFtdCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0
ZV9zZXBhcmF0ZV9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWls
dGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkKaW5kZXggNThjOGYyYWM4
YTY0MTVhMjkxY2ZmODg4Y2YxZjY4MGMxZDY2MDQ3ZC4uMTg4OTYyNTliMmYzZWE2YTk2MDRhOWM0
OGUwZTE5NWQwNjhjYmYyYSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3Nl
cGFyYXRlX2hlYWRlci5weQpAQCAtOTIsNiArOTIsMTAgQEAgY2xhc3MgRnVuY3Rpb25FeGVjdXRh
YmxlOwogICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAiYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCIpLAogICAgICAgICAgICAgKSwKIAorICAgICAgICAgICAg
KFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicGFyc2Vy
L1BhcnNlckVycm9yLmgiKSwKKyAgICAgICAgICAgICksCisKICAgICAgICAgICAgIChbIldlYkNv
cmUiXSwKICAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgImJ1aWx0aW5zL0J1aWx0
aW5VdGlscy5oIiksCiAgICAgICAgICAgICApLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5CmluZGV4
IDkwN2E2ZDcxN2M5MTBjYjA3Mjk5NTA5YzYxZGY4NDZhOWM3MDFlZmMuLmRkOTg5NDc4N2FkOGM5
ZWY0YmZiNGUxMjQxM2QzYjlhNzdkZDRkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkKQEAg
LTY4LDE0ICs2OCwxNCBAQCBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKICAgICBD
b21iaW5lZEhlYWRlclN0YXRpY01hY3JvcyA9ICgKICAgICAiIiIjZGVmaW5lIERFQ0xBUkVfQlVJ
TFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFy
Z3VtZW50Q291bnQpIFxcCi0gICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNH
ZW5lcmF0b3IoSlNDOjpWTSYpOworICAgIEV4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
KiwgSlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CiAKICR7
bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFU
T1IpCiAjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUiIiIikKIAogICAgIFNlcGFyYXRl
SGVhZGVyU3RhdGljTWFjcm9zID0gKAogICAgICIiIiNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dF
TkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJndW1lbnRD
b3VudCkgXFwKLSAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRv
cihKU0M6OlZNJik7CisgICAgRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6
OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKIAogJHttYWNyb1By
ZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElO
X0dFTkVSQVRPUikKICN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SIiIiKQpAQCAtODMs
OSArODMsMTIgQEAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElO
X0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKICAgICBDb21iaW5lZEpTQ0ltcGxlbWVu
dGF0aW9uU3RhdGljTWFjcm9zID0gKAogICAgICIiIgogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9H
RU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50
Q291bnQpIFxcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihK
U0M6OlZNJiB2bSkgXFwKK0V4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQ
YXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKIHtcXAotICAg
IHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+
bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgc3Rk
OjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFwKKyAgICBhdXRvIGV4cGVjdGVk
VW5saW5rZWQgPSB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUo
KTtcXAorICAgIGlmICghZXhwZWN0ZWRVbmxpbmtlZC5oYXNfdmFsdWUoKSlcXAorICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXhwZWN0ZWRVbmxpbmtlZC5lcnJvcigpKTtcXAorICAgICAg
ICByZXR1cm4gZXhwZWN0ZWRVbmxpbmtlZC52YWx1ZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhl
Y3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFt
ZSMjSW50cmluc2ljKTtcXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUo
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRP
UgpAQCAtOTQsOSArOTcsMTIgQEAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUo
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogICAgIFNlcGFyYXRlSlNDSW1wbGVtZW50YXRpb25T
dGF0aWNNYWNyb3MgPSAoCiAgICAgIiIiCiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRP
Uihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJndW1lbnRDb3VudCkg
XFwKLUpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0m
IHZtKSBcXAorRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVy
cm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAoge1xcCi0gICAgcmV0dXJu
IHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZt
LCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxv
cHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAorICAgIGF1dG8gZXhwZWN0ZWRVbmxpbmtl
ZCA9IHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpO1xcCisg
ICAgaWYgKCFleHBlY3RlZFVubGlua2VkLmhhc192YWx1ZSgpKVxcCisgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChleHBlY3RlZFVubGlua2VkLmVycm9yKCkpO1xcCisgICAgcmV0dXJuIGV4
cGVjdGVkVW5saW5rZWQudmFsdWUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCkt
PmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNp
Yyk7XFwKIH0KICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9D
T0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5F
UkFUT1IKQEAgLTEwNSwxMCArMTExLDEwIEBAICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmpl
Y3RNYWNyb31fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICAgICBDb21i
aW5lZFdlYkNvcmVJbXBsZW1lbnRhdGlvblN0YXRpY01hY3JvcyA9ICgKICAgICAgICAgIiIiCiAj
ZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBv
dmVycmlkZGVuTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKLUpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
KiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAorRXhwZWN0ZWQ8SlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpT
Qzo6Vk0mIHZtKSBcXAoge1xcCiAgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcXAotICAgIHJldHVybiBj
bGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5j
b2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rp
b25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6
bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcXAorICAgIHJldHVybiBjbGllbnRE
YXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFt
ZSMjRXhlY3V0YWJsZSgpLnZhbHVlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5j
dGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgc3Rk
OjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFxcCiB9CiAke21hY3JvUHJlZml4
fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYg
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCkBAIC0xMTcsMTAgKzEyMywxMCBAQCAke21hY3JvUHJl
Zml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAgICAg
U2VwYXJhdGVXZWJDb3JlSW1wbGVtZW50YXRpb25TdGF0aWNNYWNyb3MgPSAoCiAgICAgICAgICIi
IgogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFt
ZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0
YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKK0V4cGVjdGVkPEpTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRv
cihKU0M6OlZNJiB2bSkgXFwKIHtcXAogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0g
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXFwKLSAgICByZXR1
cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5z
KCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1
bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBz
dGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXFwKKyAgICByZXR1cm4gY2xp
ZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29k
ZU5hbWUjI0V4ZWN1dGFibGUoKS52YWx1ZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGlu
RnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCks
IHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcXAogfQogJHttYWNyb1By
ZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5f
R0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpAQCAtMTM5LDcgKzE0
NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJM
RVMobmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgbGVuZ3RoKSBcXAotICAgIEpT
Qzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXFwKK0V4
cGVjdGVkPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9y
PiBuYW1lIyNFeGVjdXRhYmxlKCk7IFxcCiAgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1l
IyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CiAgICAgJHttYWNy
b1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoRVhQT1NFX0JVSUxU
SU5fRVhFQ1VUQUJMRVMpCiAjdW5kZWYgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMKQEAgLTE2
Miw3ICsxNjgsNyBAQCBwcml2YXRlOgogfTsKIAogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVD
VVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpIFxcCi1p
bmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogJHtvYmplY3ROYW1lfUJ1aWx0
aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFxcCitpbmxpbmUgRXhwZWN0ZWQ8SlNDOjpV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+ICR7b2JqZWN0TmFt
ZX1CdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFibGUoKSBcXAoge1xcCiAgICAgaWYgKCFt
XyMjbmFtZSMjRXhlY3V0YWJsZSkge1xcCiAgICAgICAgIEpTQzo6SWRlbnRpZmllciBleGVjdXRh
YmxlTmFtZSA9IGZ1bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpO1xcCkBAIC0yMDIsNyArMjA4LDcg
QEAgcHVibGljOgogaW5saW5lIHZvaWQgJHtvYmplY3ROYW1lfUJ1aWx0aW5GdW5jdGlvbnM6Omlu
aXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogI2RlZmluZSBFWFBPUlRf
RlVOQ1RJT04oY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGxlbmd0aClc
XAotICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZShtX3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0p
LCAmZ2xvYmFsT2JqZWN0KSk7CisgICAgbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1f
dm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlKG1fdm0sIGNvZGVOYW1l
IyNHZW5lcmF0b3IobV92bSkudmFsdWUoKSwgJmdsb2JhbE9iamVjdCkpOwogICAgICR7bWFjcm9Q
cmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKEVYUE9SVF9GVU5DVElP
TikKICN1bmRlZiBFWFBPUlRfRlVOQ1RJT04KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApp
bmRleCBhYTk2M2Y1Mjc1YzBlZGM4ZTY1NDc5NWViNWE4OWI5NjcxY2FlNWJjLi40OWY1N2RkYzI1
ZjNjMTM2MzcxNmE1YTgxZGE0NGQ4NTE5NWRjYzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CkBAIC0xNzksNyArMTc5LDYgQEAgYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcAogYmluZGlu
Z3MvU2NyaXB0VmFsdWUuY3BwCiAKIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKLWJ1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5jcHAKIGJ1aWx0aW5zL0J1aWx0aW5OYW1l
cy5jcHAKIAogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTY1NCw2ICs2NTMsNyBAQCBwYXJz
ZXIvTm9kZXMuY3BwCiBwYXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcAogcGFyc2VyL1BhcnNl
ci5jcHAKIHBhcnNlci9QYXJzZXJBcmVuYS5jcHAKK3BhcnNlci9QYXJzZXJFcnJvci5jcHAKIHBh
cnNlci9Tb3VyY2VQcm92aWRlci5jcHAKIHBhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlLmNwcAog
cGFyc2VyL1VubGlua2VkU291cmNlQ29kZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNzllN2U2ZWY5NWNlMjFjNDQzMjNhNmVhNDFkMzZh
MzNmYTM1OTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkJ1
aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5oIgotCi0jaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVz
LmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3Jl
YXRlQnVpbHRpbkV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBDb25zdHJ1Y3RvcktpbmQga2luZCwgQ29uc3RydWN0QWJp
bGl0eSBhYmlsaXR5KQotewotICAgIHJldHVybiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4
ZWN1dGFibGUodm0sIHNvdXJjZSwgaWRlbnQsIGtpbmQsIGFiaWxpdHkpOwotfQotICAgIAotfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDE5YzA4ODRiN2I2MWRmMDgwY2RhYzNhZTVjYjJkMDZlZTMzNWFlMTIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5oCisrKyAvZGV2L251bGwKQEAg
LTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQ29uc3RydWN0QWJpbGl0eS5oIgotI2luY2x1
ZGUgIlBhcnNlck1vZGVzLmgiCi0jaW5jbHVkZSAiU291cmNlQ29kZS5oIgotCi1uYW1lc3BhY2Ug
SlNDIHsKLQotSlNfRVhQT1JUX1BSSVZBVEUgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNy
ZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50
aWZpZXImLCBDb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHkpOwotCi19IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggYWQwZDgzOWFlMTkxODQwNDkzYzY1ZmM0MjgyZDQ3NTUy
MTA3MTZkYy4uZWY2OTk2MDYxMmEyYjliZTg3NGNjZGI4NjNkZjM5Yzg1ZWM1NDUxZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxl
cy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCisjaW5jbHVkZSA8d3RmL0V4
cGVjdGVkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewpAQCAtNTEsMjUgKzUyLDM0IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWls
dGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvcihDb25zdHJ1CiAgICAgY2Fz
ZSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29uc3Ry
dWN0b3JLaW5kOjpCYXNlOgotICAgICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBt
YWtlU291cmNlKGJhc2VDb25zdHJ1Y3RvckNvZGUsIHsgfSksIG5hbWUsIGNvbnN0cnVjdG9yS2lu
ZCwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0KTsKKyAgICAgICAgcmV0dXJuIGNyZWF0
ZUV4ZWN1dGFibGVPckNyYXNoKG1fdm0sIG1ha2VTb3VyY2UoYmFzZUNvbnN0cnVjdG9yQ29kZSwg
eyB9KSwgbmFtZSwgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1
Y3QpOwogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzOgotICAgICAgICByZXR1cm4g
Y3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBtYWtlU291cmNlKGRlcml2ZWRDb25zdHJ1Y3RvckNvZGUs
IHsgfSksIG5hbWUsIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3Ry
dWN0KTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUV4ZWN1dGFibGVPckNyYXNoKG1fdm0sIG1ha2VT
b3VyY2UoZGVyaXZlZENvbnN0cnVjdG9yQ29kZSwgeyB9KSwgbmFtZSwgY29uc3RydWN0b3JLaW5k
LCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QpOwogICAgIH0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1
dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiBjb2RlLCBj
b25zdCBJZGVudGlmaWVyJiBuYW1lLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkp
CitFeHBlY3RlZFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIEJ1aWx0aW5FeGVjdXRhYmxlczo6
Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoY29uc3QgU291cmNlQ29kZSYgY29kZSwgY29uc3QgSWRl
bnRpZmllciYgbmFtZSwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KQogewogICAg
IHJldHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIGNvZGUsIG5hbWUsIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgY29uc3RydWN0QWJpbGl0eSk7CiB9CiAKIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIGNv
ZGUsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJp
bGl0eSkKIHsKLSAgICByZXR1cm4gQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxl
KHZtLCBjb2RlLCBuYW1lLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGNvbnN0cnVjdEFiaWxpdHkp
OworICAgIHJldHVybiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGVPckNyYXNo
KHZtLCBjb2RlLCBuYW1lLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGNvbnN0cnVjdEFiaWxpdHkp
OwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpj
cmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1
Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlT3JDcmFzaChWTSYgdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KQor
eworICAgIGF1dG8gZXhwZWN0ZWQgPSBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFi
bGUodm0sIHNvdXJjZSwgbmFtZSwgY29uc3RydWN0b3JLaW5kLCBjb25zdHJ1Y3RBYmlsaXR5KTsK
KyAgICBpZiAoIWV4cGVjdGVkLmhhc192YWx1ZSgpKSB7CisgICAgICAgIGRhdGFMb2dMbigiRmF0
YWwgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW4gZnVuY3Rpb24gJyIsIG5hbWUuc3RyaW5nKCksICIn
Iik7CisgICAgICAgIENSQVNIKCk7CisgICAgfQorICAgIHJldHVybiBleHBlY3RlZC52YWx1ZSgp
OworfQorCitFeHBlY3RlZFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIEJ1aWx0aW5FeGVjdXRh
Ymxlczo6Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
Y29uc3QgSWRlbnRpZmllciYgbmFtZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwg
Q29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KQogewogICAgIEpTVGV4dFBvc2l0aW9u
IHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7CiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CkBAIC04
Myw4ICs5Myw4IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJs
ZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTCiAgICAgICAgICZwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lLCBjb25zdHJ1Y3RvcktpbmQpOwogCiAgICAgaWYgKCFwcm9ncmFtKSB7
Ci0gICAgICAgIGRhdGFMb2coIkZhdGFsIGVycm9yIGNvbXBpbGluZyBidWlsdGluIGZ1bmN0aW9u
ICciLCBuYW1lLnN0cmluZygpLCAiJzogIiwgZXJyb3IubWVzc2FnZSgpKTsKLSAgICAgICAgQ1JB
U0goKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1vdmUoZXJyb3IpKTsKICAgICB9CiAKICAgICBTdGF0
ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50KCk7CkBA
IC0xMDYsNyArMTE2LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFMKICAgICBtZXRhZGF0YS0+
b3ZlcnJpZGVOYW1lKG5hbWUpOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZHVtbXlURFpWYXJp
YWJsZXM7CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFk
YXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMs
IGR1bW15VERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIFdURk1vdmUocGFy
ZW50U291cmNlT3ZlcnJpZGUpKTsKLSAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxlOworICAg
IHJldHVybiBFeHBlY3RlZFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKGZ1bmN0aW9uRXhlY3V0
YWJsZSk7CiB9CiAKIHZvaWQgQnVpbHRpbkV4ZWN1dGFibGVzOjpmaW5hbGl6ZShIYW5kbGU8VW5r
bm93bj4sIHZvaWQqIGNvbnRleHQpCkBAIC0xMTUsMTUgKzEyNSwxOCBAQCB2b2lkIEJ1aWx0aW5F
eGVjdXRhYmxlczo6ZmluYWxpemUoSGFuZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0KQogfQog
CiAjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwg
b3ZlcnJpZGVOYW1lLCBsZW5ndGgpIFwKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWls
dGluRXhlY3V0YWJsZXM6Om5hbWUjI0V4ZWN1dGFibGUoKSBcCitFeHBlY3RlZFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlIEJ1aWx0aW5FeGVjdXRhYmxlczo6bmFtZSMjRXhlY3V0YWJsZSgpIFwK
IHtcCiAgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSkge1wKICAgICAgICAgSWRlbnRpZmll
ciBleGVjdXRhYmxlTmFtZSA9IG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZnVu
Y3Rpb25OYW1lIyNQdWJsaWNOYW1lKCk7XAogICAgICAgICBpZiAob3ZlcnJpZGVOYW1lKVwKICAg
ICAgICAgICAgIGV4ZWN1dGFibGVOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmbV92bSwg
b3ZlcnJpZGVOYW1lKTtcCi0gICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gV2VhazxVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4oY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV8jI25hbWUj
I1NvdXJjZSwgZXhlY3V0YWJsZU5hbWUsIHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhp
cywgJm1fIyNuYW1lIyNFeGVjdXRhYmxlKTtcCisgICAgICAgIEV4cGVjdGVkVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUgZiA9IGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fIyNuYW1lIyNTb3Vy
Y2UsIGV4ZWN1dGFibGVOYW1lLCBzXyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSk7XAorICAgICAg
ICBpZiAoIWYuaGFzX3ZhbHVlKCkpXAorICAgICAgICAgICAgcmV0dXJuIGY7XAorICAgICAgICBt
XyMjbmFtZSMjRXhlY3V0YWJsZSA9IFdlYWs8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KGYu
dmFsdWUoKSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRhYmxlKTtcCiAgICAgfVwKLSAgICByZXR1
cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7XAorICAgIHJldHVybiBFeHBlY3RlZFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpKTtcCiB9CiBK
U0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCiAjdW5k
ZWYgRVhQT1NFX0JVSUxUSU5fU09VUkNFUwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCmluZGV4IDM2OGEzMWI3YWNiNmEzMmM5ZDU4
ZTVkZTI4MDFjMjg5YmJmNTJhMmYuLmNlNTA4YmUzNjQwNGNmMjVmODU5NmExOGZjM2UwZmU1NTli
NjgyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmgKQEAgLTI2LDEwICsyNiwxMSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJKU0NCdWlsdGlucy5oIgotI2luY2x1ZGUgIlBhcnNlck1vZGVzLmgiCisjaW5jbHVkZSAi
UGFyc2VyLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgogI2luY2x1ZGUgIldlYWsuaCIKICNp
bmNsdWRlICJXZWFrSGFuZGxlT3duZXIuaCIKKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM3LDEzICszOCwxNSBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTsKIGNsYXNzIElkZW50aWZpZXI7CiBjbGFzcyBWTTsKIAordXNpbmcgRXhw
ZWN0ZWRVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSA9IEV4cGVjdGVkPFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiwgUGFyc2VyRXJyb3I+OworCiBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXMg
ZmluYWw6IHByaXZhdGUgV2Vha0hhbmRsZU93bmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBCdWlsdGluRXhlY3V0YWJsZXMoVk0mKTsKIAog
I2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIG92
ZXJyaWRkZW5OYW1lLCBsZW5ndGgpIFwKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1l
IyNFeGVjdXRhYmxlKCk7IFwKK0V4cGVjdGVkVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgbmFt
ZSMjRXhlY3V0YWJsZSgpOyBcCiBjb25zdCBTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSB7IHJl
dHVybiBtXyMjbmFtZSMjU291cmNlOyB9CiAgICAgCiAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9D
T0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQpAQCAtNTEsMTMgKzU0LDE0IEBAIGNvbnN0
IFNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0K
IAogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVEZWZhdWx0Q29uc3RydWN0
b3IoQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKIAotICAgIHN0YXRp
YyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRXhlY3V0YWJsZShWTSYsIGNvbnN0
IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgQ29uc3RydWN0b3JLaW5kLCBDb25zdHJ1
Y3RBYmlsaXR5KTsKKyAgICBzdGF0aWMgRXhwZWN0ZWRVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSBjcmVhdGVFeGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZp
ZXImLCBDb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHkpOworICAgIHN0YXRpYyBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRXhlY3V0YWJsZU9yQ3Jhc2goVk0mLCBjb25z
dCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIENvbnN0cnVjdG9yS2luZCwgQ29uc3Ry
dWN0QWJpbGl0eSk7CiBwcml2YXRlOgogICAgIHZvaWQgZmluYWxpemUoSGFuZGxlPFVua25vd24+
LCB2b2lkKiBjb250ZXh0KSBvdmVycmlkZTsKIAogICAgIFZNJiBtX3ZtOwogCi0gICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvdXJj
ZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgQ29uc3RydWN0QWJpbGl0eSk7CisgICAgRXhwZWN0
ZWRVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25z
dCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIENvbnN0cnVjdEFiaWxpdHkpOwogCiAj
ZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUs
IG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpXAogICAgIFNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJj
ZTsgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCmluZGV4IDBlZGZlM2RmNGVmNjM4YzExMjVhN2MyYTM5MGIzODBhNGQy
YzIxNDYuLmRkYjQ2MTIyNmUzNzQ2NTZhZjBiMTI1OWYzNWM4OTdmNmEzYzUxMTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9u
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckVycm9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJyb3IuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjJmOWFjN2FiNDNmMGNjYzQ3YzRjYzFiYjlkYjBiZmY4ZGYzZDhlMjUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckVycm9yLmNwcApA
QCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgorCisj
aW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVy
cy5oIgorI2luY2x1ZGUgIkhlYXBDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKK0pTT2JqZWN0KiBQYXJzZXJFcnJvcjo6dG9F
cnJvck9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIGludCBvdmVycmlkZUxpbmVOdW1iZXIpCit7CisgICAgRXhlY1N0YXRlKiBleGVj
ID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAg
ICBjYXNlIEVycm9yTm9uZToKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgY2FzZSBTeW50
YXhFcnJvcjogeworICAgICAgICBhdXRvIHN5bnRheEVycm9yID0gY3JlYXRlU3ludGF4RXJyb3Io
ZXhlYywgbV9tZXNzYWdlKTsKKyAgICAgICAgYXV0byBsaW5lID0gb3ZlcnJpZGVMaW5lTnVtYmVy
ID09IC0xID8gbV9saW5lIDogb3ZlcnJpZGVMaW5lTnVtYmVyOworICAgICAgICByZXR1cm4gYWRk
RXJyb3JJbmZvKGV4ZWMsIHN5bnRheEVycm9yLCBsaW5lLCBzb3VyY2UpOworICAgIH0KKyAgICBj
YXNlIEV2YWxFcnJvcjoKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIG1f
bWVzc2FnZSk7CisgICAgY2FzZSBTdGFja092ZXJmbG93OiB7CisgICAgICAgIEVycm9ySGFuZGxp
bmdTY29wZSBlcnJvclNjb3BlKGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgIHJldHVybiBj
cmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgfQorICAgIGNhc2UgT3V0T2ZNZW1v
cnk6CisgICAgICAgIHJldHVybiBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgIH0K
KyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitKU09iamVjdCogUGFyc2Vy
RXJyb3I6OnRocm93U3RhY2tPdmVyZmxvd09yT3V0T2ZNZW1vcnkoRXhlY1N0YXRlKiBleGVjKQor
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIEVycm9yTm9u
ZToKKyAgICBjYXNlIEV2YWxFcnJvcjoKKyAgICBjYXNlIFN5bnRheEVycm9yOgorICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2UgU3RhY2tPdmVyZmxvdzoKKyAg
ICAgICAgcmV0dXJuIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICBj
YXNlIE91dE9mTWVtb3J5OgorICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4
ZWMsIHNjb3BlKTsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
K30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKK3ZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJvclR5cGUgdHlw
ZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN5
bnRheEVycm9yTm9uZToKKyAgICAgICAgb3V0LnByaW50KCJTeW50YXhFcnJvck5vbmUiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JJcnJl
Y292ZXJhYmxlOgorICAgICAgICBvdXQucHJpbnQoIlN5bnRheEVycm9ySXJyZWNvdmVyYWJsZSIp
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJv
clVudGVybWluYXRlZExpdGVyYWw6CisgICAgICAgIG91dC5wcmludCgiU3ludGF4RXJyb3JVbnRl
cm1pbmF0ZWRMaXRlcmFsIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6UGFyc2Vy
RXJyb3I6OlN5bnRheEVycm9yUmVjb3ZlcmFibGU6CisgICAgICAgIG91dC5wcmludCgiU3ludGF4
RXJyb3JSZWNvdmVyYWJsZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYgb3V0LCBKU0M6OlBhcnNlckVycm9yOjpFcnJvclR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2gg
KHR5cGUpIHsKKyAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OkVycm9yTm9uZToKKyAgICAgICAg
b3V0LnByaW50KCJFcnJvck5vbmUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpQ
YXJzZXJFcnJvcjo6U3RhY2tPdmVyZmxvdzoKKyAgICAgICAgb3V0LnByaW50KCJTdGFja092ZXJm
bG93Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OkV2YWxF
cnJvcjoKKyAgICAgICAgb3V0LnByaW50KCJFdmFsRXJyb3IiKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6T3V0T2ZNZW1vcnk6CisgICAgICAgIG91dC5wcmlu
dCgiT3V0T2ZNZW1vcnkiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpQYXJzZXJF
cnJvcjo6U3ludGF4RXJyb3I6CisgICAgICAgIG91dC5wcmludCgiU3ludGF4RXJyb3IiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlckVycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ckVycm9yLmgKaW5kZXggNzg4M2VmZWQyMjUwMjJjMDIwNmI3ODY0MGI1YTcxNzg5ZDljZWE1Mi4u
YzBiYzM5OTRlMWIyYzQ5MDY2OWE3Yzg4OGM4N2U2NjZhMDhiMmE0MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJFcnJvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJyb3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsOSArMjUsNiBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIkVycm9yLmgiCi0jaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3Bl
LmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIlBhcnNlclRva2Vu
cy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC04NCwzMSArODEsOCBA
QCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9t
ZXNzYWdlOyB9CiAgICAgaW50IGxpbmUoKSBjb25zdCB7IHJldHVybiBtX2xpbmU7IH0KIAotICAg
IEpTT2JqZWN0KiB0b0Vycm9yT2JqZWN0KAotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIAotICAgICAgICBpbnQgb3ZlcnJpZGVM
aW5lTnVtYmVyID0gLTEpCi0gICAgewotICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAg
Y2FzZSBFcnJvck5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgY2Fz
ZSBTeW50YXhFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBhZGRFcnJvckluZm8oCi0gICAgICAg
ICAgICAgICAgZXhlYywgCi0gICAgICAgICAgICAgICAgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywg
bV9tZXNzYWdlKSwgCi0gICAgICAgICAgICAgICAgb3ZlcnJpZGVMaW5lTnVtYmVyID09IC0xID8g
bV9saW5lIDogb3ZlcnJpZGVMaW5lTnVtYmVyLCBzb3VyY2UpOwotICAgICAgICBjYXNlIEV2YWxF
cnJvcjoKLSAgICAgICAgICAgIHJldHVybiBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBtX21lc3Nh
Z2UpOwotICAgICAgICBjYXNlIFN0YWNrT3ZlcmZsb3c6IHsKLSAgICAgICAgICAgIEVycm9ySGFu
ZGxpbmdTY29wZSBlcnJvclNjb3BlKGdsb2JhbE9iamVjdC0+dm0oKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgT3V0T2ZNZW1vcnk6Ci0gICAgICAgICAgICByZXR1cm4gY3JlYXRlT3V0T2ZNZW1vcnlF
cnJvcihleGVjKTsKLSAgICAgICAgfQotICAgICAgICBDUkFTSCgpOwotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICB9CisgICAgSlNPYmplY3QqIHRvRXJyb3JPYmplY3QoSlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgaW50IG92ZXJyaWRlTGluZU51bWJlciA9IC0xKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dTdGFja092ZXJmbG93T3JPdXRPZk1l
bW9yeShFeGVjU3RhdGUqID0gbnVsbHB0cik7CiAKIHByaXZhdGU6CiAgICAgSlNUb2tlbiBtX3Rv
a2VuOwpAQCAtMTIxLDQ4ICs5NSw2IEBAIHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAog
bmFtZXNwYWNlIFdURiB7Ci0KLWlubGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgSlNDOjpQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JUeXBlIHR5cGUpCi17Ci0gICAgc3dp
dGNoICh0eXBlKSB7Ci0gICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJvck5vbmU6
Ci0gICAgICAgIG91dC5wcmludCgiU3ludGF4RXJyb3JOb25lIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9ySXJyZWNvdmVyYWJsZToKLSAg
ICAgICAgb3V0LnByaW50KCJTeW50YXhFcnJvcklycmVjb3ZlcmFibGUiKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JVbnRlcm1pbmF0ZWRM
aXRlcmFsOgotICAgICAgICBvdXQucHJpbnQoIlN5bnRheEVycm9yVW50ZXJtaW5hdGVkTGl0ZXJh
bCIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhF
cnJvclJlY292ZXJhYmxlOgotICAgICAgICBvdXQucHJpbnQoIlN5bnRheEVycm9yUmVjb3ZlcmFi
bGUiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotfQotCi1pbmxpbmUgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiBvdXQsIEpTQzo6UGFyc2VyRXJyb3I6OkVycm9yVHlwZSB0eXBlKQotewotICAgIHN3aXRjaCAo
dHlwZSkgewotICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6RXJyb3JOb25lOgotICAgICAgICBv
dXQucHJpbnQoIkVycm9yTm9uZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBKU0M6OlBh
cnNlckVycm9yOjpTdGFja092ZXJmbG93OgotICAgICAgICBvdXQucHJpbnQoIlN0YWNrT3ZlcmZs
b3ciKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6RXZhbEVy
cm9yOgotICAgICAgICBvdXQucHJpbnQoIkV2YWxFcnJvciIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpPdXRPZk1lbW9yeToKLSAgICAgICAgb3V0LnByaW50
KCJPdXRPZk1lbW9yeSIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBKU0M6OlBhcnNlckVy
cm9yOjpTeW50YXhFcnJvcjoKLSAgICAgICAgb3V0LnByaW50KCJTeW50YXhFcnJvciIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19Ci0KK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6UGFyc2VyRXJy
b3I6OlN5bnRheEVycm9yVHlwZSk7Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBK
U0M6OlBhcnNlckVycm9yOjpFcnJvclR5cGUpOwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5
cGUuY3BwCmluZGV4IDgwMGNmYTA5NjQxYzBjYTI4MDhmMDU2MDEyZWRhM2QwMjMyMjM3ZjcuLjE3
NjE5OTA5YzUzZjRmZDUwY2IyZDM0Y2I0ZDhhMjRiNDcyYjkxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuY3Bw
CkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgQXN5bmNJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgQVNTRVJUKGlu
aGVyaXRzKHZtLCBpbmZvKCkpKTsKICAgICBkaWRCZWNvbWVQcm90b3R5cGUoKTsKIAotICAgIEpT
RnVuY3Rpb24qIGFzeW5jSXRlcmF0b3JQcm90b3R5cGVGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgYXN5bmNJdGVyYXRvclByb3RvdHlwZVN5bWJvbEFzeW5jSXRlcmF0b3JHZXR0ZXJD
b2RlR2VuZXJhdG9yKHZtKSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBKU0Z1bmN0aW9uKiBhc3luY0l0
ZXJhdG9yUHJvdG90eXBlRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGFzeW5jSXRl
cmF0b3JQcm90b3R5cGVTeW1ib2xBc3luY0l0ZXJhdG9yR2V0dGVyQ29kZUdlbmVyYXRvcih2bSku
dmFsdWUoKSwgZ2xvYmFsT2JqZWN0KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+YXN5bmNJdGVyYXRvclN5bWJvbCwgYXN5bmNJdGVyYXRvclBy
b3RvdHlwZUZ1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uUHJvdG90eXBlLmNwcAppbmRleCBkMGZkNzYyNDdjYmMxNmI2MGE0YmEyZTRkM2Iz
NWU4OGU2ZTQ5ZmQ5Li5hNmVkMzVhMDA2ZjQ4MjAwNzdjZGZlN2FmOWQxM2M0MjgwMTQzODcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuY3BwCkBAIC02MywxMSArNjMsMTEgQEAgdm9pZCBGdW5jdGlvblByb3RvdHlwZTo6YWRkRnVu
Y3Rpb25Qcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGcKICAgICBK
U0Z1bmN0aW9uKiB0b1N0cmluZ0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nLnN0cmluZygpLCBmdW5jdGlv
blByb3RvRnVuY1RvU3RyaW5nKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcsIHRvU3RyaW5nRnVuY3Rpb24sIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAotICAgICphcHBseUZ1
bmN0aW9uID0gcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGds
b2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXBwbHlQdWJsaWNO
YW1lKCksIGZ1bmN0aW9uUHJvdG90eXBlQXBwbHlDb2RlR2VuZXJhdG9yKHZtKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgICpjYWxsRnVu
Y3Rpb24gPSBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jYWxsUHVibGljTmFt
ZSgpLCBmdW5jdGlvblByb3RvdHlwZUNhbGxDb2RlR2VuZXJhdG9yKHZtKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIHB1dERpcmVjdEJ1
aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIHZtLnByb3Bl
cnR5TmFtZXMtPmJpbmQsIGZ1bmN0aW9uUHJvdG90eXBlQmluZENvZGVHZW5lcmF0b3Iodm0pLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAg
KmFwcGx5RnVuY3Rpb24gPSBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hcHBs
eVB1YmxpY05hbWUoKSwgZnVuY3Rpb25Qcm90b3R5cGVBcHBseUNvZGVHZW5lcmF0b3Iodm0pLnZh
bHVlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKKyAgICAqY2FsbEZ1bmN0aW9uID0gcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuY2FsbFB1YmxpY05hbWUoKSwgZnVuY3Rpb25Qcm90b3R5cGVDYWxsQ29kZUdlbmVyYXRvcih2
bSkudmFsdWUoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOworICAgIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmJpbmQsIGZ1bmN0aW9uUHJvdG90eXBl
QmluZENvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAotICAgICpoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0
aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBmdW5jdGlvblByb3RvdHlwZVN5bWJvbEhhc0lu
c3RhbmNlQ29kZUdlbmVyYXRvcih2bSksIGdsb2JhbE9iamVjdCk7CisgICAgKmhhc0luc3RhbmNl
U3ltYm9sRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uUHJvdG90eXBl
U3ltYm9sSGFzSW5zdGFuY2VDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpLCBnbG9iYWxPYmplY3Qp
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5o
YXNJbnN0YW5jZVN5bWJvbCwgKmhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24sIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA4Zjg0MGNjNDdkZjQyMzU1MGQ1
M2M0ODY4NTNjZGJkOWNiYWE2ZTVlLi5kOWE5YTI3MDFjYTZkODQxMThhZjk2MzI2ZWNkMjJhMTlj
ZGFhNDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC00NDMsMjQgKzQ0MywyNCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0
KFZNJiB2bSkKICAgICAgICAgfSk7CiAgICAgbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24uaW5p
dExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQp
IHsKLSAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBhcnJh
eVByb3RvdHlwZVZhbHVlc0NvZGVHZW5lcmF0b3IoaW5pdC52bSksIGluaXQub3duZXIpKTsKKyAg
ICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBhcnJheVByb3Rv
dHlwZVZhbHVlc0NvZGVHZW5lcmF0b3IoaW5pdC52bSkudmFsdWUoKSwgaW5pdC5vd25lcikpOwog
ICAgICAgICB9KTsKICAgICBtX2luaXRpYWxpemVQcm9taXNlRnVuY3Rpb24uaW5pdExhdGVyKAog
ICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKLSAgICAg
ICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBwcm9taXNlT3BlcmF0
aW9uc0luaXRpYWxpemVQcm9taXNlQ29kZUdlbmVyYXRvcihpbml0LnZtKSwgaW5pdC5vd25lcikp
OworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIHByb21p
c2VPcGVyYXRpb25zSW5pdGlhbGl6ZVByb21pc2VDb2RlR2VuZXJhdG9yKGluaXQudm0pLnZhbHVl
KCksIGluaXQub3duZXIpKTsKICAgICAgICAgfSk7CiAKICAgICBtX2l0ZXJhdG9yUHJvdG9jb2xG
dW5jdGlvbi5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Z1bmN0
aW9uPiYgaW5pdCkgewotICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGlu
aXQudm0sIGl0ZXJhdG9ySGVscGVyc1BlcmZvcm1JdGVyYXRpb25Db2RlR2VuZXJhdG9yKGluaXQu
dm0pLCBpbml0Lm93bmVyKSk7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVh
dGUoaW5pdC52bSwgaXRlcmF0b3JIZWxwZXJzUGVyZm9ybUl0ZXJhdGlvbkNvZGVHZW5lcmF0b3Io
aW5pdC52bSkudmFsdWUoKSwgaW5pdC5vd25lcikpOwogICAgICAgICB9KTsKIAogICAgIG1fcHJv
bWlzZVJlc29sdmVGdW5jdGlvbi5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFs
aXplcjxKU0Z1bmN0aW9uPiYgaW5pdCkgewotICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlv
bjo6Y3JlYXRlKGluaXQudm0sIHByb21pc2VDb25zdHJ1Y3RvclJlc29sdmVDb2RlR2VuZXJhdG9y
KGluaXQudm0pLCBpbml0Lm93bmVyKSk7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9u
OjpjcmVhdGUoaW5pdC52bSwgcHJvbWlzZUNvbnN0cnVjdG9yUmVzb2x2ZUNvZGVHZW5lcmF0b3Io
aW5pdC52bSkudmFsdWUoKSwgaW5pdC5vd25lcikpOwogICAgICAgICB9KTsKIAotICAgIG1fbmV3
UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgcHJvbWlzZU9wZXJhdGlvbnNOZXdQcm9taXNlQ2FwYWJpbGl0eUNvZGVHZW5lcmF0b3Io
dm0pLCB0aGlzKSk7CisgICAgbV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uLnNldCh2bSwg
dGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBwcm9taXNlT3BlcmF0aW9uc05ld1Byb21pc2VD
YXBhYmlsaXR5Q29kZUdlbmVyYXRvcih2bSkudmFsdWUoKSwgdGhpcykpOwogICAgIG1fZnVuY3Rp
b25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBoYXNJbnN0YW5j
ZVN5bWJvbEZ1bmN0aW9uKTsKICAgICBtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyLmluaXRM
YXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEdldHRlclNldHRlcj4mIGluaXQp
IHsKQEAgLTQ5MSw3ICs0OTEsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkK
ICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5pbml0UmVzdHJpY3RlZFByb3BlcnRpZXMoZXhlYywg
dGhpcyk7CiAKICAgICBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXIuc2V0KHZtLCB0aGlzLCBHZXR0ZXJT
ZXR0ZXI6OmNyZWF0ZSh2bSwgdGhpcykpOwotICAgIG1fc3BlY2llc0dldHRlclNldHRlci0+c2V0
R2V0dGVyKHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9wZXJhdGlvbnNT
cGVjaWVzR2V0dGVyQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpKTsKKyAgICBtX3NwZWNpZXNHZXR0
ZXJTZXR0ZXItPnNldEdldHRlcih2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9i
YWxPcGVyYXRpb25zU3BlY2llc0dldHRlckNvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIHRoaXMp
KTsKIAogICAgIG1fdHlwZWRBcnJheVByb3RvLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0
IEluaXRpYWxpemVyPEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU+JiBpbml0KSB7CkBAIC01MTMs
NyArNTEzLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgIFtd
IChMYXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVyJiBpbml0KSB7IFwKICAgICAgICAgICAg
IGluaXQuc2V0UHJvdG90eXBlKEpTICMjIHR5cGUgIyMgQXJyYXlQcm90b3R5cGU6OmNyZWF0ZShp
bml0LnZtLCBpbml0Lmdsb2JhbCwgSlMgIyMgdHlwZSAjIyBBcnJheVByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBpbml0Lmdsb2JhbC0+bV90eXBlZEFycmF5
UHJvdG8uZ2V0KGluaXQuZ2xvYmFsKSkpKTsgXAogICAgICAgICAgICAgaW5pdC5zZXRTdHJ1Y3R1
cmUoSlMgIyMgdHlwZSAjIyBBcnJheTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xv
YmFsLCBpbml0LnByb3RvdHlwZSkpOyBcCi0gICAgICAgICAgICBpbml0LnNldENvbnN0cnVjdG9y
KEpTICMjIHR5cGUgIyMgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGluaXQudm0sIGluaXQuZ2xv
YmFsLCBKUyAjIyB0eXBlICMjIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShpbml0
LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm1fdHlwZWRBcnJheVN1cGVyQ29uc3RydWN0
b3IuZ2V0KGluaXQuZ2xvYmFsKSksIGluaXQucHJvdG90eXBlLCBBU0NJSUxpdGVyYWwoI3R5cGUg
IkFycmF5IiksIHR5cGVkQXJyYXlDb25zdHJ1Y3RvckFsbG9jYXRlICMjIHR5cGUgIyMgQXJyYXlD
b2RlR2VuZXJhdG9yKGluaXQudm0pKSk7IFwKKyAgICAgICAgICAgIGluaXQuc2V0Q29uc3RydWN0
b3IoSlMgIyMgdHlwZSAjIyBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5n
bG9iYWwsIEpTICMjIHR5cGUgIyMgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGlu
aXQudm0sIGluaXQuZ2xvYmFsLCBpbml0Lmdsb2JhbC0+bV90eXBlZEFycmF5U3VwZXJDb25zdHJ1
Y3Rvci5nZXQoaW5pdC5nbG9iYWwpKSwgaW5pdC5wcm90b3R5cGUsIEFTQ0lJTGl0ZXJhbCgjdHlw
ZSAiQXJyYXkiKSwgdHlwZWRBcnJheUNvbnN0cnVjdG9yQWxsb2NhdGUgIyMgdHlwZSAjIyBBcnJh
eUNvZGVHZW5lcmF0b3IoaW5pdC52bSkudmFsdWUoKSkpOyBcCiAgICAgICAgICAgICBpbml0Lmds
b2JhbC0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oaW5pdC52bSwgaW5pdC52bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS50eXBlICMjIEFycmF5UHJpdmF0ZU5hbWUoKSwgaW5pdC5j
b25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOyBcCiAgICAgICAgIH0pOwogICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhD
TFVESU5HX0RBVEFfVklFVyhJTklUX1RZUEVEX0FSUkFZX0xBVEVSKQpAQCAtODM3LDcgKzgzNyw3
IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNO
YW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgSlNPYmplY3QqIHJlZ0V4cFN5bWJvbFJl
cGxhY2UgPSBhc09iamVjdChtX3JlZ0V4cFByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5yZXBsYWNlU3ltYm9sKS5hc0NlbGwoKSk7CiAgICAgbV9yZWdFeHBQcm90b1N5
bWJvbFJlcGxhY2Uuc2V0KHZtLCB0aGlzLCByZWdFeHBTeW1ib2xSZXBsYWNlKTsKIAotI2RlZmlu
ZSBDUkVBVEVfUFJJVkFURV9HTE9CQUxfRlVOQ1RJT04obmFtZSwgY29kZSkgSlNGdW5jdGlvbiog
bmFtZSAjIyBQcml2YXRlRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGUgIyMg
Q29kZUdlbmVyYXRvcih2bSksIHRoaXMpOworI2RlZmluZSBDUkVBVEVfUFJJVkFURV9HTE9CQUxf
RlVOQ1RJT04obmFtZSwgY29kZSkgSlNGdW5jdGlvbiogbmFtZSAjIyBQcml2YXRlRnVuY3Rpb24g
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGUgIyMgQ29kZUdlbmVyYXRvcih2bSkudmFsdWUo
KSwgdGhpcyk7CiAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9QUklWQVRFX0dMT0JB
TF9OQU1FKENSRUFURV9QUklWQVRFX0dMT0JBTF9GVU5DVElPTikKICN1bmRlZiBDUkVBVEVfUFJJ
VkFURV9HTE9CQUxfRlVOQ1RJT04KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCmluZGV4IDI1MjU5MTNkZjM3MzMxZjU3YTdiNTI1YzZmMDEyMDgwNWE3ZWZjZDIu
LmJlNmRjOTkzMTdlOTU5ZTIzOTJhZTcwYjgxN2NhODQwNjU4NDNmMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTIwMzQsMTIgKzIwMzQsMTUgQEAg
Ym9vbCBKU09iamVjdDo6Z2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgZG91Ymxl
JiBudW1iZXIsIEpTVmFsdWUmIHJlc3UKICAgICByZXR1cm4gIXJlc3VsdC5pc1N0cmluZygpOwog
fQogCi1ib29sIEpTT2JqZWN0OjpnZXRPd25TdGF0aWNQcm9wZXJ0eVNsb3QoVk0mIHZtLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTT2JqZWN0
OjpnZXRPd25TdGF0aWNQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgZm9y
IChhdXRvKiBpbmZvID0gY2xhc3NJbmZvKHZtKTsgaW5mbzsgaW5mbyA9IGluZm8tPnBhcmVudENs
YXNzKSB7CiAgICAgICAgIGlmIChhdXRvKiB0YWJsZSA9IGluZm8tPnN0YXRpY1Byb3BIYXNoVGFi
bGUpIHsKLSAgICAgICAgICAgIGlmIChnZXRTdGF0aWNQcm9wZXJ0eVNsb3RGcm9tVGFibGUodm0s
IHRhYmxlLT5jbGFzc0ZvclRoaXMsICp0YWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KSkK
KyAgICAgICAgICAgIGlmIChnZXRTdGF0aWNQcm9wZXJ0eVNsb3RGcm9tVGFibGUoZXhlYywgdGFi
bGUtPmNsYXNzRm9yVGhpcywgKnRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAg
LTIzMjUsNiArMjMyOCw3IEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5QWxsU3RhdGljUHJvcGVydGll
cyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgQVNTRVJUKCFzdGF0aWNQcm9wZXJ0aWVzUmVpZmll
ZCgpKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIElmIHRoaXMgb2JqZWN0J3MgQ2xhc3NJbmZvIGhh
cyBubyBzdGF0aWMgcHJvcGVydGllcywgdGhlbiBub3RoaW5nIHRvIHJlaWZ5IQogICAgIC8vIFdl
IGNhbiBzYWZlbHkgc2V0IHRoZSBmbGFnIHRvIGF2b2lkIHRoZSBleHBlbnNpdmUgY2hlY2sgYWdh
aW4gaW4gdGhlIGZ1dHVyZS4KQEAgLTIzNDUsOCArMjM0OSwxMCBAQCB2b2lkIEpTT2JqZWN0Ojpy
ZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgdW5z
aWduZWQgYXR0cmlidXRlczsKICAgICAgICAgICAgIGF1dG8ga2V5ID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmdm0sIHZhbHVlLm1fa2V5KTsKICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IGdldERpcmVjdE9mZnNldCh2bSwga2V5LCBhdHRyaWJ1dGVzKTsKLSAgICAgICAgICAg
IGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQotICAgICAgICAgICAgICAgIHJlaWZ5U3RhdGlj
UHJvcGVydHkodm0sIGhhc2hUYWJsZS0+Y2xhc3NGb3JUaGlzLCBrZXksIHZhbHVlLCAqdGhpcyk7
CisgICAgICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgeworICAgICAgICAgICAg
ICAgIHJlaWZ5U3RhdGljUHJvcGVydHkodm0sIGV4ZWMsIGhhc2hUYWJsZS0+Y2xhc3NGb3JUaGlz
LCBrZXksIHZhbHVlLCAqdGhpcyk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggNTkwYmExZDkyOTkzNDlm
YmUwMzI5NjQ4MDk0MGI4NDM0Y2UxZmQxMS4uYjA4YTdlNDc1MmIzNjc3OWUxYjZkOGI5N2I5ZWYz
YmNhOWQwNzA1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBA
IC05NCw3ICs5NCw3IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgZnJp
ZW5kIGNsYXNzIEpTQ2VsbDsKICAgICBmcmllbmQgY2xhc3MgSlNGaW5hbE9iamVjdDsKICAgICBm
cmllbmQgY2xhc3MgTWFya2VkQmxvY2s7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgZnJpZW5kIGJv
b2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoVk0mLCBjb25zdCBIYXNoVGFibGVWYWx1ZSosIEpT
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBmcmllbmQgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqLCBjb25z
dCBIYXNoVGFibGVWYWx1ZSosIEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKIAogICAgIGVudW0gUHV0TW9kZSB7CiAgICAgICAgIFB1dE1vZGVQdXQsCkBAIC0xMDI3LDEx
ICsxMDI3LDExIEBAIHByaXZhdGU6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgTkVWRVJfSU5MSU5F
IGJvb2wgcHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwogCiAgICAgYm9vbCBnZXROb25JbmRleFByb3BlcnR5U2xvdChFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIGJvb2wgZ2V0T3duTm9u
SW5kZXhQcm9wZXJ0eVNsb3QoVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOworICAgIGJvb2wgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwg
U3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90JiwgSlNDZWxs
KiwgdW5zaWduZWQsIFByb3BlcnR5T2Zmc2V0KTsKICAgICB2b2lkIGZpbGxDdXN0b21HZXR0ZXJQ
cm9wZXJ0eVNsb3QoVk0mLCBQcm9wZXJ0eVNsb3QmLCBDdXN0b21HZXR0ZXJTZXR0ZXIqLCB1bnNp
Z25lZCwgU3RydWN0dXJlKik7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGdldE93blN0
YXRpY1Byb3BlcnR5U2xvdChWTSYsIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRPd25TdGF0aWNQcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdHJ1Y3QgUHJvcGVydHlIYXNo
RW50cnkgewogICAgICAgICBjb25zdCBIYXNoVGFibGUqIHRhYmxlOwogICAgICAgICBjb25zdCBI
YXNoVGFibGVWYWx1ZSogdmFsdWU7CkBAIC0xMzQzLDE0ICsxMzQzLDE1IEBAIGlubGluZSBKU1Zh
bHVlIEpTT2JqZWN0OjpnZXRQcm90b3R5cGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAKIC8v
IEl0IGlzIHNhZmUgdG8gY2FsbCB0aGlzIG1ldGhvZCB3aXRoIGEgUHJvcGVydHlOYW1lIHRoYXQg
aXMgYWN0dWFsbHkgYW4gaW5kZXgsCiAvLyBidXQgaWYgc28gd2lsbCBhbHdheXMgcmV0dXJuIGZh
bHNlIChkb2Vzbid0IHNlYXJjaCBpbmRleCBzdG9yYWdlKS4KLUFMV0FZU19JTkxJTkUgYm9vbCBK
U09iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQor
QUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdChF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
ICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0
cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwogICAgIGlmICghaXNW
YWxpZE9mZnNldChvZmZzZXQpKSB7CiAgICAgICAgIGlmICghVHlwZUluZm86Omhhc1N0YXRpY1By
b3BlcnR5VGFibGUoaW5saW5lVHlwZUZsYWdzKCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICByZXR1cm4gZ2V0T3duU3RhdGljUHJvcGVydHlTbG90KHZtLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOworICAgICAgICByZXR1cm4gZ2V0T3duU3RhdGljUHJvcGVydHlTbG90KGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIAogICAgIC8vIGdldFByb3BlcnR5U2xv
dCByZWxpZXMgb24gdGhpcyBtZXRob2QgbmV2ZXIgcmV0dXJuaW5nIGluZGV4IHByb3BlcnRpZXMh
CkBAIC0xNDAwLDE5ICsxNDAxLDIyIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU09iamVjdDo6Zmls
bEN1c3RvbUdldHRlclByb3BlcnR5U2xvdChWTSYgdm0sIFByb3BlcnR5U2xvdCYKIEFMV0FZU19J
TkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gb2JqZWN0
LT5zdHJ1Y3R1cmUodm0pOwotICAgIGlmIChvYmplY3QtPmdldE93bk5vbkluZGV4UHJvcGVydHlT
bG90KHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgaWYgKG9iamVjdC0+
Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QoZXhlYywgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBmYWxzZSk7CiAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFy
c2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gZ2V0T3duUHJvcGVydHlTbG90
QnlJbmRleChvYmplY3QsIGV4ZWMsIGluZGV4LnZhbHVlKCksIHNsb3QpOwogICAgIHJldHVybiBm
YWxzZTsKIH0KIAogLy8gSXQgbWF5IHNlZW0gY3JhenkgdG8gaW5saW5lIGEgZnVuY3Rpb24gdGhp
cyBsYXJnZSBidXQgaXQgbWFrZXMgYSBiaWcgZGlmZmVyZW5jZQotLy8gc2luY2UgdGhpcyBpcyBm
dW5jdGlvbiB2ZXJ5IGhvdCBpbiB2YXJpYWJsZSBsb29rdXAKKy8vIHNpbmNlIHRoaXMgZnVuY3Rp
b24gaXMgdmVyeSBob3QgaW4gdmFyaWFibGUgbG9va3VwCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNP
YmplY3Q6OmdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBz
dHJ1Y3R1cmVJRFRhYmxlID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCk7CiAgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IHRoaXM7CiAgICAgd2hpbGUgKHRydWUpIHsKQEAgLTE0MjksOCArMTQzMyw5
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlCiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKG9i
amVjdC0+dHlwZSgpICE9IFByb3h5T2JqZWN0VHlwZSk7CiAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gc3RydWN0dXJlSURUYWJsZS5nZXQob2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKLSAg
ICAgICAgaWYgKG9iamVjdC0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3Qodm0sIHN0cnVjdHVy
ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICAgICAgaWYgKG9iamVjdC0+Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eVNsb3QoZXhlYywgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBsb29rIGxpa2UgaXQncyBm
b2xsb3dpbmcgdGhlIHNwZWNpZmljYXRpb246CiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI1NzIKICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUg
PSBzdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZShvYmplY3QpOwpAQCAtMTYzMSw3ICsxNjM2LDcg
QEAgSlNfRVhQT1JUX1BSSVZBVEUgTkVWRVJfSU5MSU5FIGJvb2wgb3JkaW5hcnlTZXRTbG93KEV4
ZWNTdGF0ZSosIEpTT2JqZWN0KiwgUHJvcGUKIAogI2RlZmluZSBKU0NfQlVJTFRJTl9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04oanNOYW1lLCBnZW5lcmF0b3JOYW1lLCBhdHRyaWJ1dGVzKSBc
CiAgICAgcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oXAotICAgICAg
ICB2bSwgZ2xvYmFsT2JqZWN0LCBtYWtlSWRlbnRpZmllcih2bSwgKGpzTmFtZSkpLCAoZ2VuZXJh
dG9yTmFtZSkodm0pLCAoYXR0cmlidXRlcykpCisgICAgICAgIHZtLCBnbG9iYWxPYmplY3QsIG1h
a2VJZGVudGlmaWVyKHZtLCAoanNOYW1lKSksIChnZW5lcmF0b3JOYW1lKSh2bSkudmFsdWUoKSwg
KGF0dHJpYnV0ZXMpKQogCiAvLyBIZWxwZXIgZm9yIGRlZmluaW5nIG5hdGl2ZSBnZXR0ZXJzIG9u
IHByb3BlcnRpZXMuCiAjZGVmaW5lIEpTQ19OQVRJVkVfSU5UUklOU0lDX0dFVFRFUihqc05hbWUs
IGNwcE5hbWUsIGF0dHJpYnV0ZXMsIGludHJpbnNpYykgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggODkyZTJjYTQ1Zjk3ZGQ2ZjMy
YTZhMGU2OGExOTJlMjZlZTUzMTgwYi4uYjRiNTcwZWJjYjQyODE5YjczZDY5ZWVlYjBlOGVjMjFl
YTg0OGExZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJ
bmxpbmVzLmgKQEAgLTE0MCw4ICsxNDAsOSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6
OmdldE5vbkluZGV4UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogICAg
IHdoaWxlICh0cnVlKSB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3RydWN0dXJl
SURUYWJsZS5nZXQob2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAgaWYgKExJS0VMWSgh
VHlwZUluZm86Om92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdChvYmplY3QtPmlubGluZVR5cGVG
bGFncygpKSkpIHsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmdldE93bk5vbkluZGV4UHJvcGVy
dHlTbG90KHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgICAgICAgICBp
ZiAob2JqZWN0LT5nZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdChleGVjLCBzdHJ1Y3R1cmUsIHBy
b3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBib29sIGhhc1Nsb3QgPSBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5tZXRo
b2RUYWJsZS5nZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1By
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlLmNwcAppbmRleCA3NWIwYzExZjM2ZTI2YTdiYTQ5MzQxNTg1NTI2MzhiODFl
MTVmMWUyLi44N2ZkYTNhZjhkOTMwMzdlYWNkMmRhMjY4N2VhMjUwNDA3OTY2ZGVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlLmNwcApAQCAtMzMwLDcgKzMzMCw3IEBAIHZvaWQgSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqCiAgICAgdG9TdHJpbmdUYWdBY2Nlc3Nvci0+c2V0R2V0dGVyKHZtLCBnbG9iYWxPYmplY3Qs
IHRvU3RyaW5nVGFnRnVuY3Rpb24pOwogICAgIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3Iodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCB0b1N0cmluZ1RhZ0FjY2Vzc29y
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwogCi0gICAgSlNGdW5jdGlvbiogdmFs
dWVzRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHR5cGVkQXJyYXlQcm90b3R5cGVW
YWx1ZXNDb2RlR2VuZXJhdG9yKHZtKSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBKU0Z1bmN0aW9uKiB2
YWx1ZXNGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdHlwZWRBcnJheVByb3RvdHlw
ZVZhbHVlc0NvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIGdsb2JhbE9iamVjdCk7CiAKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkudmFsdWVzUHVibGljTmFtZSgpLCB2YWx1ZXNGdW5jdGlvbiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgdmFsdWVz
RnVuY3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCmluZGV4IDk2NmM3
MWViMTBhOGE4NDg0N2U4N2NiNjEyM2U0MDg3NTE3OGJmMDYuLjhlYWMwZjk0YzU3NjE0ODFhMDdm
MzBiMmIyYTU1YzZjNDg5NTcyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xvb2t1cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9v
a3VwLmNwcApAQCAtMzMsNyArMzMsNyBAQCB2b2lkIHJlaWZ5U3RhdGljQWNjZXNzb3IoVk0mIHZt
LCBjb25zdCBIYXNoVGFibGVWYWx1ZSYgdmFsdWUsIEpTT2JqZWN0JiB0aGlzT2JqZQogICAgIGlm
ICh2YWx1ZS5hY2Nlc3NvckdldHRlcigpKSB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9u
ID0gbnVsbHB0cjsKICAgICAgICAgaWYgKHZhbHVlLmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0
cmlidXRlOjpCdWlsdGluKQotICAgICAgICAgICAgZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHZhbHVlLmJ1aWx0aW5BY2Nlc3NvckdldHRlckdlbmVyYXRvcigpKHZtKSwgZ2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgICAgIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB2
YWx1ZS5idWlsdGluQWNjZXNzb3JHZXR0ZXJHZW5lcmF0b3IoKSh2bSkudmFsdWUoKSwgZ2xvYmFs
T2JqZWN0KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBTdHJpbmcgZ2V0dGVyTmFtZSA9
IHRyeU1ha2VTdHJpbmcoQVNDSUlMaXRlcmFsKCJnZXQgIiksIFN0cmluZygqcHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSkpOwogICAgICAgICAgICAgaWYgKCFnZXR0ZXJOYW1lKQpAQCAtNDUsOCAr
NDUsMTAgQEAgdm9pZCByZWlmeVN0YXRpY0FjY2Vzc29yKFZNJiB2bSwgY29uc3QgSGFzaFRhYmxl
VmFsdWUmIHZhbHVlLCBKU09iamVjdCYgdGhpc09iamUKICAgICB0aGlzT2JqZWN0LnB1dERpcmVj
dE5vbkluZGV4QWNjZXNzb3Iodm0sIHByb3BlcnR5TmFtZSwgYWNjZXNzb3IsIGF0dHJpYnV0ZXNG
b3JTdHJ1Y3R1cmUodmFsdWUuYXR0cmlidXRlcygpKSk7CiB9CiAKLWJvb2wgc2V0VXBTdGF0aWNG
dW5jdGlvblNsb3QoVk0mIHZtLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgSGFz
aFRhYmxlVmFsdWUqIGVudHJ5LCBKU09iamVjdCogdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9u
U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBjb25zdCBI
YXNoVGFibGVWYWx1ZSogZW50cnksIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgQVNT
RVJUKHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpKTsKICAgICBBU1NFUlQoZW50cnktPmF0dHJp
YnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpCdWlsdGluT3JGdW5jdGlvbk9yQWNjZXNzb3JP
ckxhenlQcm9wZXJ0eSk7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKQEAgLTU5LDcgKzYxLDgg
QEAgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChWTSYgdm0sIGNvbnN0IENsYXNzSW5mbyog
Y2xhc3NJbmZvLCBjb25zdCBIYXNoVGFibGUKICAgICAgICAgaWYgKHRoaXNPYmplY3QtPnN0YXRp
Y1Byb3BlcnRpZXNSZWlmaWVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAg
ICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgY2xhc3NJbmZvLCBwcm9wZXJ0eU5hbWUsICplbnRy
eSwgKnRoaXNPYmplY3QpOworICAgICAgICByZWlmeVN0YXRpY1Byb3BlcnR5KHZtLCBleGVjLCBj
bGFzc0luZm8sIHByb3BlcnR5TmFtZSwgKmVudHJ5LCAqdGhpc09iamVjdCk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAogICAgICAgICBvZmZzZXQgPSB0aGlz
T2JqZWN0LT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiAg
ICAgICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xvb2t1cC5oCmluZGV4IGJmZWU1MWUwYjFhY2I0NDZhMzUwODJiNDViZjAxZTkzOGE2
ODhhZjcuLjY2ZTdhMTFmN2MyNjVlZTIyYjhiMzg4ODVmNTdkNjEyYmQ2NDcwZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCkBAIC0zMSwxMCArMzEsMTIgQEAKICNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRl
ICJMYXp5UHJvcGVydHkuaCIKKyNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgogI2luY2x1ZGUgIlBy
b3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIlB1dFByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIlR5
cGVFcnJvci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0V4
cGVjdGVkLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00Nyw3ICs0OSw3IEBAIHN0cnVjdCBD
b21wYWN0SGFzaEluZGV4IHsKIC8vIGllLiB0eXBlZGVmIEpTVmFsdWUgKCpHZXRGdW5jdGlvbiko
RXhlY1N0YXRlKiwgSlNPYmplY3QqIGJhc2VPYmplY3QpCiB0eXBlZGVmIFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jIEdldEZ1bmN0aW9uOwogdHlwZWRlZiBQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYyBQdXRGdW5jdGlvbjsKLXR5cGVkZWYgRnVuY3Rpb25FeGVjdXRhYmxlKiAoKkJ1aWx0
aW5HZW5lcmF0b3IpKFZNJik7Cit0eXBlZGVmIEV4cGVjdGVkPEZ1bmN0aW9uRXhlY3V0YWJsZSos
IFBhcnNlckVycm9yPiAoKkJ1aWx0aW5HZW5lcmF0b3IpKFZNJik7CiB0eXBlZGVmIEpTVmFsdWUg
KCpMYXp5UHJvcGVydHlDYWxsYmFjaykoVk0mLCBKU09iamVjdCopOwogCiAvLyBIYXNoIHRhYmxl
IGdlbmVyYXRlZCBieSB0aGUgY3JlYXRlX2hhc2hfdGFibGUgc2NyaXB0LgpAQCAtMjAzLDcgKzIw
NSw3IEBAIHN0cnVjdCBIYXNoVGFibGUgewogICAgIH0KIH07CiAKLUpTX0VYUE9SVF9QUklWQVRF
IGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoVk0mLCBjb25zdCBDbGFzc0luZm8qLCBjb25z
dCBIYXNoVGFibGVWYWx1ZSosIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOworSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9u
U2xvdChFeGVjU3RhdGUqLCBjb25zdCBDbGFzc0luZm8qLCBjb25zdCBIYXNoVGFibGVWYWx1ZSos
IEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCByZWlmeVN0YXRpY0FjY2Vzc29yKFZNJiwgY29uc3QgSGFzaFRh
YmxlVmFsdWUmLCBKU09iamVjdCYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1lKTsKIAogaW5saW5l
IEJ1aWx0aW5HZW5lcmF0b3IgSGFzaFRhYmxlVmFsdWU6OmJ1aWx0aW5BY2Nlc3NvckdldHRlckdl
bmVyYXRvcigpIGNvbnN0CkBAIC0yMjAsNyArMjIyLDcgQEAgaW5saW5lIEJ1aWx0aW5HZW5lcmF0
b3IgSGFzaFRhYmxlVmFsdWU6OmJ1aWx0aW5BY2Nlc3NvclNldHRlckdlbmVyYXRvcigpIGNvbnN0
CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QnVpbHRpbkdlbmVyYXRvcj4obV92YWx1ZXMu
dmFsdWUyKTsKIH0KIAotaW5saW5lIGJvb2wgZ2V0U3RhdGljUHJvcGVydHlTbG90RnJvbVRhYmxl
KFZNJiB2bSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGNvbnN0IEhhc2hUYWJsZSYgdGFi
bGUsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBnZXRTdGF0aWNQcm9wZXJ0eVNsb3RGcm9tVGFi
bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgSGFz
aFRhYmxlJiB0YWJsZSwgSlNPYmplY3QqIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAodGhpc09iamVjdC0+c3RhdGlj
UHJvcGVydGllc1JlaWZpZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjMwLDcgKzIz
Miw3IEBAIGlubGluZSBib29sIGdldFN0YXRpY1Byb3BlcnR5U2xvdEZyb21UYWJsZShWTSYgdm0s
IGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBjCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkJ1aWx0aW5P
ckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5KQotICAgICAgICByZXR1cm4gc2V0VXBT
dGF0aWNGdW5jdGlvblNsb3Qodm0sIGNsYXNzSW5mbywgZW50cnksIHRoaXNPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CisgICAgICAgIHJldHVybiBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChl
eGVjLCBjbGFzc0luZm8sIGVudHJ5LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
CiAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3Rh
bnRJbnRlZ2VyKSB7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgYXR0cmlidXRl
c0ZvclN0cnVjdHVyZShlbnRyeS0+YXR0cmlidXRlcygpKSwganNOdW1iZXIoZW50cnktPmNvbnN0
YW50SW50ZWdlcigpKSk7CkBAIC0zMTksMTMgKzMyMSwyNCBAQCBpbmxpbmUgYm9vbCBsb29rdXBQ
dXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU09iamVjdCog
YmFzZQogICAgIHJldHVybiB0cnVlOwogfQogCi1pbmxpbmUgdm9pZCByZWlmeVN0YXRpY1Byb3Bl
cnR5KFZNJiB2bSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGNvbnN0IFByb3BlcnR5TmFt
ZSYgcHJvcGVydHlOYW1lLCBjb25zdCBIYXNoVGFibGVWYWx1ZSYgdmFsdWUsIEpTT2JqZWN0JiB0
aGlzT2JqKQoraW5saW5lIHZvaWQgcmVpZnlTdGF0aWNQcm9wZXJ0eShWTSYgdm0sIEV4ZWNTdGF0
ZSogZXhlY0lmQXZhaWxhYmxlLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgUHJv
cGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IEhhc2hUYWJsZVZhbHVlJiB2YWx1ZSwgSlNP
YmplY3QmIHRoaXNPYmopCiB7CisgICAgQVNTRVJUKGV4ZWNJZkF2YWlsYWJsZSA9PSBudWxscHRy
IHx8ICZ2bSA9PSAmKGV4ZWNJZkF2YWlsYWJsZS0+dm0oKSkpOworCiAgICAgaWYgKHZhbHVlLmF0
dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpCdWlsdGluKSB7CiAgICAgICAgIGlmICh2
YWx1ZS5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpCiAgICAgICAg
ICAgICByZWlmeVN0YXRpY0FjY2Vzc29yKHZtLCB2YWx1ZSwgdGhpc09iaiwgcHJvcGVydHlOYW1l
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpc09iai5wdXREaXJlY3RCdWlsdGluRnVu
Y3Rpb24odm0sIHRoaXNPYmouZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgdmFsdWUuYnVp
bHRpbkdlbmVyYXRvcigpKHZtKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1
dGVzKCkpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBFeHBlY3RlZDxGdW5jdGlvbkV4
ZWN1dGFibGUqLCBQYXJzZXJFcnJvcj4gZiA9IHZhbHVlLmJ1aWx0aW5HZW5lcmF0b3IoKSh2bSk7
CisgICAgICAgICAgICBpZiAoZi5oYXNfdmFsdWUoKSkKKyAgICAgICAgICAgICAgICB0aGlzT2Jq
LnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2bSwgdGhpc09iai5nbG9iYWxPYmplY3QoKSwgcHJv
cGVydHlOYW1lLCBmLnZhbHVlKCksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUodmFsdWUuYXR0cmli
dXRlcygpKSk7CisgICAgICAgICAgICBlbHNlIGlmIChleGVjSWZBdmFpbGFibGUpCisgICAgICAg
ICAgICAgICAgZi5lcnJvcigpLnRocm93U3RhY2tPdmVyZmxvd09yT3V0T2ZNZW1vcnkoZXhlY0lm
QXZhaWxhYmxlKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGRhdGFMb2dM
bigiRmF0YWwgcGFyc2VyIGVycm9yIChwcm9iYWJseSBhIHN0YWNrIG92ZXJmbG93KSwgYW5kIG5v
IEV4ZWNTdGF0ZSBhdmFpbGFibGUgZm9yIHRocm93aW5nIGEgSlMgZXhjZXB0aW9uIik7CisgICAg
ICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC00MDAsNyArNDEzLDcgQEAgaW5saW5lIHZvaWQgcmVpZnlTdGF0
aWNQcm9wZXJ0aWVzKFZNJiB2bSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGNvbnN0IEhh
c2gKICAgICAgICAgaWYgKCF2YWx1ZS5tX2tleSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBhdXRvIGtleSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4odmFsdWUubV9rZXkpLCBzdHJsZW4odmFsdWUubV9rZXkpKTsKLSAg
ICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgY2xhc3NJbmZvLCBrZXksIHZhbHVlLCB0aGlz
T2JqKTsKKyAgICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgbnVsbHB0ciwgY2xhc3NJbmZv
LCBrZXksIHZhbHVlLCB0aGlzT2JqKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCmluZGV4IDUzNTY4YjdhM2FhZTRiMTI2Y2Nl
MzM5ZDMyZDA0NzBlZWE3NmExODMuLmZlMmI2YmVlMTMyMGNiMjU1N2E3ZGU1MzJmZmQ5ODA0ZGIz
MjVkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBl
LmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIE1hcFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJVkVfSU5U
UklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5nZXRQcml2YXRlTmFtZSgpLCBtYXBQcm90b0Z1bmNHZXQsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxLCBKU01hcEdldEludHJp
bnNpYyk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnNldFByaXZhdGVOYW1lKCksIG1h
cFByb3RvRnVuY1NldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIDIsIEpTTWFwU2V0SW50cmluc2ljKTsKIAotICAgIEpTRnVuY3Rpb24qIGVudHJp
ZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIG1hcFByb3RvdHlwZUVudHJpZXNDb2RlR2VuZXJh
dG9yKHZtKSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBKU0Z1bmN0aW9uKiBlbnRyaWVzID0gSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBtYXBQcm90b3R5cGVFbnRyaWVzQ29kZUdlbmVyYXRvcih2bSkudmFs
dWUoKSwgZ2xvYmFsT2JqZWN0KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSwgZW50
cmllcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkp
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5p
dGVyYXRvclN5bWJvbCwgZW50cmllcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNTdHJpbmcoJnZtLCAiTWFwIiks
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcApp
bmRleCAyOTM0Mzk2MDg3ZTY4YmYzOGM5MTg3MzE4MDRmNmY2ZTcwYjA3ZDZjLi5mMmYwNWUzZmYw
ZmU0YzNhYjlmMmNiNmJlMDUyOWE0NDBjMmZkODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBTZXRQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJ
T04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaGFzUHJpdmF0ZU5hbWUoKSwgc2V0
UHJvdG9GdW5jSGFzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgMSwgSlNTZXRIYXNJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lD
X0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5hZGRQcml2YXRlTmFtZSgpLCBzZXRQcm90b0Z1bmNBZGQsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxLCBKU1NldEFkZEludHJpbnNpYyk7
CiAKLSAgICBKU0Z1bmN0aW9uKiB2YWx1ZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHNldFBy
b3RvdHlwZVZhbHVlc0NvZGVHZW5lcmF0b3Iodm0pLCBnbG9iYWxPYmplY3QpOworICAgIEpTRnVu
Y3Rpb24qIHZhbHVlcyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgc2V0UHJvdG90eXBlVmFsdWVz
Q29kZUdlbmVyYXRvcih2bSkudmFsdWUoKSwgZ2xvYmFsT2JqZWN0KTsKICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudmFs
dWVzUHVibGljTmFtZSgpLCB2YWx1ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1YmxpY05hbWUoKSwgdmFsdWVz
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJh
dG9yU3ltYm9sLCB2YWx1ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9K
U0RvbGxhclZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNw
cAppbmRleCA3N2Y2MDM5NWNmNmE5NDI2YzE2NjBiZTBlYjgwMWVmNjZjYWM3NGJlLi4zNmRiZDRm
MjZjNDBkYmRjMTBkN2UzOTE0ZmViMDdiOTI0MzViMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiSlNEb2xsYXJWTS5oIgogCi0jaW5jbHVkZSAiQnVpbHRpbkV4ZWN1
dGFibGVDcmVhdG9yLmgiCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgiCiAj
aW5jbHVkZSAiRE9NSklUR2V0dGVyU2V0dGVyLmgiCkBAIC0xNTIyLDkgKzE1MjIsOCBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUJ1aWx0aW4oRXhl
Y1N0YXRlKiBleGVjKQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogCiAgICAgY29uc3QgU291cmNlQ29kZSYgc291cmNlID0gbWFrZVNvdXJjZShmdW5j
dGlvblRleHQsIHsgfSk7Ci0gICAgSlNGdW5jdGlvbiogZnVuYyA9IEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUodm0sIHNvdXJjZSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmdm0sICJmb28iKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBDb25zdHJ1Y3RBYmls
aXR5OjpDYW5ub3RDb25zdHJ1Y3QpLT5saW5rKHZtLCBzb3VyY2UpLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmdW5jKTsKKyAgICBh
dXRvIHVubGlua2VkID0gQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlT3JDcmFz
aCh2bSwgc291cmNlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImZvbyIpLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdCk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHVubGlua2VkLT5s
aW5rKHZtLCBzb3VyY2UpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVSb290KEV4ZWNT
dGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVh
ZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcAppbmRleCBjYTk3
ZTk2MTFkMDMyMmI2NTJkY2NlNGY2ZWY5OGU0OGEyZDczMzZkLi4xNGMyYmNkZTY5MjU3YmFjMjQx
NmRiZTdhM2MzYWQ2YmQzYmRiYjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMu
Y3BwCkBAIC0xMjQsMjcgKzEyNCwyNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU0J1
aWx0aW5SZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0UHJpdmF0ZUNvbnN0cnVjdG9yOgogCiB0ZW1w
bGF0ZTw+IEZ1bmN0aW9uRXhlY3V0YWJsZSogSlNCdWlsdGluUmVhZGFibGVTdHJlYW1EZWZhdWx0
UmVhZGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZShKU0M6OlZNJiB2
bSkKIHsKLSAgICByZXR1cm4gcmVhZGFibGVTdHJlYW1JbnRlcm5hbHNQcml2YXRlSW5pdGlhbGl6
ZVJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlckNvZGVHZW5lcmF0b3Iodm0pOworICAgIHJldHVy
biByZWFkYWJsZVN0cmVhbUludGVybmFsc1ByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1E
ZWZhdWx0UmVhZGVyQ29kZUdlbmVyYXRvcih2bSkudmFsdWUoKTsKIH0KIAogdGVtcGxhdGU8PiBG
dW5jdGlvbkV4ZWN1dGFibGUqIEpTQnVpbHRpblJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xs
ZXJQcml2YXRlQ29uc3RydWN0b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKEpTQzo6Vk0mIHZtKQog
ewotICAgIHJldHVybiByZWFkYWJsZVN0cmVhbUludGVybmFsc1ByaXZhdGVJbml0aWFsaXplUmVh
ZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckNvZGVHZW5lcmF0b3Iodm0pOworICAgIHJldHVy
biByZWFkYWJsZVN0cmVhbUludGVybmFsc1ByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1E
ZWZhdWx0Q29udHJvbGxlckNvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCk7CiB9CiAKIHRlbXBsYXRl
PD4gRnVuY3Rpb25FeGVjdXRhYmxlKiBKU0J1aWx0aW5SZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9s
bGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZShKU0M6OlZNJiB2bSkK
IHsKLSAgICByZXR1cm4gcmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzUHJpdmF0ZUluaXRpYWxp
emVSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyQ29kZUdlbmVyYXRvcih2bSk7CisgICAgcmV0
dXJuIHJlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFsc1ByaXZhdGVJbml0aWFsaXplUmVhZGFibGVC
eXRlU3RyZWFtQ29udHJvbGxlckNvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCk7CiB9CiAKIHRlbXBs
YXRlPD4gRnVuY3Rpb25FeGVjdXRhYmxlKiBKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbUJZT0JSZWFk
ZXJQcml2YXRlQ29uc3RydWN0b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKEpTQzo6Vk0mIHZtKQog
ewotICAgIHJldHVybiByZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNQcml2YXRlSW5pdGlhbGl6
ZVJlYWRhYmxlU3RyZWFtQllPQlJlYWRlckNvZGVHZW5lcmF0b3Iodm0pOworICAgIHJldHVybiBy
ZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNQcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFt
QllPQlJlYWRlckNvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCk7CiB9CiAKIHRlbXBsYXRlPD4gRnVu
Y3Rpb25FeGVjdXRhYmxlKiBKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0UHJpdmF0
ZUNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZShKU0M6OlZNJiB2bSkKIHsKLSAgICBy
ZXR1cm4gcmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzUHJpdmF0ZUluaXRpYWxpemVSZWFkYWJs
ZVN0cmVhbUJZT0JSZXF1ZXN0Q29kZUdlbmVyYXRvcih2bSk7CisgICAgcmV0dXJuIHJlYWRhYmxl
Qnl0ZVN0cmVhbUludGVybmFsc1ByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1CWU9CUmVx
dWVzdENvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVSZWFk
YWJsZVN0cmVhbURlZmF1bHRSZWFkZXJQcml2YXRlQ29uc3RydWN0b3IoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBjNGY1MTI4ZDEwOGZjNzRiOGZiNDUx
ZWJjY2UzZTg4M2VhZDJmN2QxLi42M2IwNTkzY2IzODNhZWE2NTM5NGNlOWE4YTNlMmNlZGFkZjYx
MGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQpAQCAtNzE3Myw3ICs3MTczLDcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JI
ZWxwZXJNZXRob2RzCiAgICAgaWYgKElzSlNCdWlsdGluQ29uc3RydWN0b3IoJGludGVyZmFjZSkp
IHsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAidGVtcGxhdGU8PiBGdW5jdGlvbkV4ZWN1
dGFibGUqICR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojppbml0aWFsaXplRXhlY3V0YWJsZShWTSYg
dm0pXG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7Ci0gICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gIiAuIEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFt
ZUZyb21TdHJpbmcoJGludGVyZmFjZS0+dHlwZS0+bmFtZSwgImluaXRpYWxpemUiIC4gJGludGVy
ZmFjZS0+dHlwZS0+bmFtZSkgLiAiKHZtKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgcmV0dXJuICIgLiBHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWVGcm9tU3RyaW5nKCRp
bnRlcmZhY2UtPnR5cGUtPm5hbWUsICJpbml0aWFsaXplIiAuICRpbnRlcmZhY2UtPnR5cGUtPm5h
bWUpIC4gIih2bSkudmFsdWUoKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9
XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiXG4iKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAppbmRl
eCAxYWM2ZWFiNjQ5ZWYyMjA3NzY0YjJjMjRkODc1OWMyZTNmMmI0MzhmLi5lMGIxNjA4YmQwNTQ2
MjYyMWJlYjU0MDY1YWM2NDA1ZjdjZGI5ZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdGVt
cGxhdGU8PiB2b2lkIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0
b3I6OmluaXRpYWxpemVQcm9wZXIKIAogdGVtcGxhdGU8PiBGdW5jdGlvbkV4ZWN1dGFibGUqIEpT
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluaXRpYWxpemVF
eGVjdXRhYmxlKFZNJiB2bSkKIHsKLSAgICByZXR1cm4gdGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9ySW5pdGlhbGl6ZVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvZGVH
ZW5lcmF0b3Iodm0pOworICAgIHJldHVybiB0ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JJbml0aWFsaXplVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29kZUdlbmVyYXRv
cih2bSkudmFsdWUoKTsKIH0KIAogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3RvckNvbnN0cnVjdG9yKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ci5jcHAKaW5kZXggZTJhZTViZDhhNDNjYzFkYzk1NzRiYjYzZmE0ZjM2NWZmYTM2MTY1Mi4uODI1
M2JhYmYyMTU4YjJjMjhmNzliZGFlMGY2MDBiOGUzZGJjOWIwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHRlbXBsYXRlPD4g
dm9pZCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJv
cGVydGllcyhWTSYKIAogdGVtcGxhdGU8PiBGdW5jdGlvbkV4ZWN1dGFibGUqIEpTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKFZNJiB2bSkK
IHsKLSAgICByZXR1cm4gdGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9ySW5pdGlhbGl6ZVRlc3RKU0J1
aWx0aW5Db25zdHJ1Y3RvckNvZGVHZW5lcmF0b3Iodm0pOworICAgIHJldHVybiB0ZXN0SlNCdWls
dGluQ29uc3RydWN0b3JJbml0aWFsaXplVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29kZUdlbmVy
YXRvcih2bSkudmFsdWUoKTsKIH0KIAogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9OwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAyMzE3
NzIxMWQ4ZTZiOGQyMzBhNTRkYmVkNzM4MGZmODE5YTZmMjkxLi5hZmQ2ZDdlYjQ2YTk4MjVlMjBm
Zjg0MTQzN2I5ODZiYThjMmM5MTFhIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTAzLTI5ICBSb2JpbiBN
b3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQSBzdGFjayBvdmVyZmxv
dyBpbiB0aGUgcGFyc2luZyBvZiBhIGJ1aWx0aW4gKGNhbGxlZCBieSBjcmVhdGVFeGVjdXRhYmxl
KSBjYXVzZSBhIGNyYXNoIGluc3RlYWQgb2YgYSBjYXRjaGFibGUganMgZXhjZXB0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQwNzQKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM3MTY1ODk3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL3N0YWNrLW92ZXJmbG93LXdoaWxlLXBhcnNp
bmctYnVpbHRpbi5qczogQWRkZWQuCisgICAgICAgIChmKToKKwogMjAxOC0wMy0yOCAgUm9iaW4g
TW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIGFwcGVuZFF1b3RlZEpT
T05TdHJpbmcgc3RvcHMgb24gYXJpdGhtZXRpYyBvdmVyZmxvdyBpbnN0ZWFkIG9mIHByb3BhZ2F0
aW5nIGl0IHVwd2FyZHMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3N0YWNrLW92ZXJmbG93
LXdoaWxlLXBhcnNpbmctYnVpbHRpbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3N0YWNrLW92ZXJmbG93
LXdoaWxlLXBhcnNpbmctYnVpbHRpbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjk5YTE3MmY0M2ViN2U2MjY3
ZDUxY2M2ZGU5MWI2NWE4Y2Y2ZDYxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
c3RhY2stb3ZlcmZsb3ctd2hpbGUtcGFyc2luZy1idWlsdGluLmpzCkBAIC0wLDAgKzEsMTEgQEAK
K2Z1bmN0aW9uIGYoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgZigpOworICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIE1hcC5wcm90b3R5cGUuZm9yRWFjaC5jYWxs
KCcnLCB7fSk7CisgICAgICAgIH0gY2F0Y2gge30KKyAgICB9Cit9CisKK2YoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336848</attachid>
            <date>2018-03-30 02:02:14 -0700</date>
            <delta_ts>2018-03-30 05:02:44 -0700</delta_ts>
            <desc>Trying again to check if EWS failure is deterministic</desc>
            <filename>bug-184074-20180330110212.patch</filename>
            <type>text/plain</type>
            <size>78707</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
OGEwYzhmOGE5MjVlZjVlYmY4YWIxNDUzMTU1Zjc3MmZjNzJmMzVkLi5iMDk2ZmQ5YmU3ZDE0Nzc4
NTY5YmQ2OTQ4MjMxZDcwODM5ZjQwMmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NCBAQAorMjAxOC0wMy0yOSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUu
Y29tPgorCisgICAgICAgIEEgc3RhY2sgb3ZlcmZsb3cgaW4gdGhlIHBhcnNpbmcgb2YgYSBidWls
dGluIChjYWxsZWQgYnkgY3JlYXRlRXhlY3V0YWJsZSkgY2F1c2UgYSBjcmFzaCBpbnN0ZWFkIG9m
IGEgY2F0Y2hhYmxlIGpzIGV4Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MDc0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNzE2NTg5
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhp
bmcgdGhpcyByZXF1aXJlcyBnZXR0aW5nIHRoZSBQYXJzZXJFcnJvciAod2l0aCBpbmZvcm1hdGlv
biBhYm91dCB0aGUgZmFpbHVyZSkgYW5kIGFuIEV4ZWNTdGF0ZSogKHRvIHRocm93IGFuIGV4Y2Vw
dGlvbikgaW4gdGhlIHNhbWUgcGxhY2UuCisgICAgICAgIEl0IGlzIHN1cnByaXNpbmdseSBwYWlu
ZnVsLCB3aXRoIHF1aXRlIGEgbG9uZyBjYWxsIHN0YWNrIGJldHdlZW4gdGhlIGxhc3QgZnVuY3Rp
b24gd2l0aCBhbiBhY2Nlc3MgdG8gYW4gRXhlY1N0YXRlKiBhbmQgdGhlIGZpcnN0IGZ1bmN0aW9u
IHdpdGggdGhlIFBhcnNlckVycm9yLgorICAgICAgICBFdmVuIHdvcnNlLCBtYW55IG9mIHRoZXNl
IGZ1bmN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IG1hY3JvcywgdGhlbXNlbHZlcyBnZW5lcmF0ZWQg
YnkgYSBtYXplIG9mIHB5dGhvbiBzY3JpcHRzLgorICAgICAgICBBcyBhIHJlc3VsdCwgdGhpcyBw
YXRjaCBpcyBncm90ZXNxdWVseSBsYXJnZSwgd2hpbGUgYWxsIGl0IGRvZXMgaXMgYWRkaW5nIGVu
b3VnaCBwbHVtYmluZyB0byB0aHJvdyBhIHByb3BlciBleGNlcHRpb24gaW4gdGhpcyBzcGVjaWZp
YyBjYXNlLgorCisgICAgICAgIFRoZXJlIGFyZSBub3cgYmFyZSBjYWxscyB0byAnLnZhbHVlKCkn
IG9uIHNldmVyYWwgcGF0aHMgdGhhdCBtYXkgY3Jhc2guIEl0IGlzIG5vdCBhIHByb2JsZW0gaW4g
bXkgb3Bpbmlvbiwgc2luY2Ugd2UgcHJldmlvdXNseSBjcmFzaGVkIGluIGV2ZXJ5IGNhc2UgcmVn
YXJkbGVzcyBvZiB0aGUgcGF0aCB0aGF0IHRvb2sgdXMgdG8gY3JlYXRlRXhlY3V0YWJsZSB3aGVu
IGVuY291bnRlcmluZyBhIHN0YWNrIG92ZXJmbG93LgorICAgICAgICBJZiB3ZSBldmVyIGZpbmQg
YW4gZXhhbXBsZSB0aGF0IGNhbiBjYXVzZSB0aGVzZSBjYWxscyB0byBmYWlsLCBpdCBzaG91bGQg
YmUgZG9hYmxlIHRvIHRocm93IGEgcHJvcGVyIGV4Y2VwdGlvbiB0aGVyZSB0b28uCisKKyAgICAg
ICAgVHdvIG90aGVyIG1pbm9yIGNoYW5nZXM6CisgICAgICAgIC0gSSByZW1vdmVkIEJ1aWx0aW5F
eGVjdXRhYmxlQ3JlYXRvci57Y3BwLCBofSBhcyBpdCB3YXMgbmVhcmx5IGVtcHR5LCBhbmQgb25s
eSB1c2VkIGluIG9uZSBwbGFjZS4gVGhhdCBwbGFjZSBub3cgaW5jbHVkZXMgQnVpbHRpbkV4ZWN1
dGFibGVzLmggZGlyZWN0bHkgaW5zdGVhZC4KKyAgICAgICAgLSBJIG1vdmVkIGNvZGUgZnJvbSBQ
YXJzZXJFcnJvci5oIGludG8gYSBuZXdseSBjcmVhdGVkIFBhcnNlckVycm9yLmNwcCwgYXMgSSBz
ZWUgbm8gbmVlZCB0byBpbmxpbmUgZnVuY3Rpb25zIHRoYXQgYXJlIG9ubHkgdXNlZCB3aGVuIGVu
Y291bnRlcmluZyBhIHBhcnNlciBlcnJvciwgYW5kIFBhcnNlckVycm9yLmggaXMgbm93IGluY2x1
ZGVkIGluIHF1aXRlIGEgZmV3IHBsYWNlcy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWls
dGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHk6CisgICAgICAgIChCdWlsdGluc0NvbWJp
bmVkSGVhZGVyR2VuZXJhdG9yLmdlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKToKKyAgICAg
ICAgKFBhcnNlckVycm9yKToKKyAgICAgICAgKGdlbmVyYXRlX3NlY3Rpb25fZm9yX29iamVjdCk6
IERlbGV0ZWQuCisgICAgICAgIChnZW5lcmF0ZV9leHRlcm5zX2Zvcl9vYmplY3QpOiBEZWxldGVk
LgorICAgICAgICAoZ2VuZXJhdGVfbWFjcm9zX2Zvcl9vYmplY3QpOiBEZWxldGVkLgorICAgICAg
ICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV90YWJsZV9tYWNybyk6IERlbGV0ZWQuCisgICAg
ICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX25hbWVfbWFjcm8pOiBEZWxldGVkLgorICAg
ICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3JfZ2xvYmFsX3ByaXZhdGVfY29kZV9uYW1lX21hY3Jv
KTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRl
X3NlcGFyYXRlX2hlYWRlci5weToKKyAgICAgICAgKGdlbmVyYXRlX3NlY29uZGFyeV9oZWFkZXJf
aW5jbHVkZXMpOgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVz
LnB5OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlQ3JlYXRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVDcmVhdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVh
dGVEZWZhdWx0Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6
OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlQnVpbHRpbkV4
ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1
dGFibGVPckNyYXNoKToKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVF
eGVjdXRhYmxlKToKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaDoKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyRXJyb3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UGFyc2VyRXJyb3I6OnRv
RXJyb3JPYmplY3QpOgorICAgICAgICAoSlNDOjpQYXJzZXJFcnJvcjo6dGhyb3dTdGFja092ZXJm
bG93T3JPdXRPZk1lbW9yeSk6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAg
ICAqIHBhcnNlci9QYXJzZXJFcnJvci5oOgorICAgICAgICAoSlNDOjpQYXJzZXJFcnJvcjo6dG9F
cnJvck9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OkFzeW5jSXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25Qcm90b3R5cGU6OmFkZEZ1bmN0aW9uUHJvcGVydGllcyk6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmdldE93blN0YXRpY1Byb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpyZWlm
eUFsbFN0YXRpY1Byb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXROb25JbmRleFByb3BlcnR5U2xvdCk6
CisgICAgICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvTG9va3VwLmNwcDoKKyAgICAgICAgKEpTQzo6cmVpZnlTdGF0aWNBY2Nl
c3Nvcik6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGljRnVuY3Rpb25TbG90KToKKyAgICAgICAg
KiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNQcm9wZXJ0eVNsb3RG
cm9tVGFibGUpOgorICAgICAgICAoSlNDOjpyZWlmeVN0YXRpY1Byb3BlcnR5KToKKyAgICAgICAg
KiBydW50aW1lL01hcFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcFByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6U2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogdG9v
bHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlQnVpbHRpbik6
CisKIDIwMTgtMDMtMjkgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzAwNjIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWVlMDAyN2MwNmQ0MzkzODI4MDA2ZmUzNjk3YjgwYjc3MDEwY2Q0OC4uMGY1MTY5NzczOWZjN2Yw
YTljNjAxZDJmYjAwMjNhMWY5MmMwZTEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisy
MDE4LTAzLTI5ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAg
ICAgQSBzdGFjayBvdmVyZmxvdyBpbiB0aGUgcGFyc2luZyBvZiBhIGJ1aWx0aW4gKGNhbGxlZCBi
eSBjcmVhdGVFeGVjdXRhYmxlKSBjYXVzZSBhIGNyYXNoIGluc3RlYWQgb2YgYSBjYXRjaGFibGUg
anMgZXhjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODQwNzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM3MTY1ODk3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkgaGFkIHRvIHNsaWdodGx5
IGNoYW5nZSB0aGUgdHlwZSBvZiBzb21lIGJpbmRpbmdzIGJldHdlZW4gSlNDIGFuZCBXZWJDb3Jl
LiBObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCBvbiB0aGUgV2ViQ29yZSBzaWRlLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNCdWlsdGluUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVh
ZGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyUHJpdmF0ZUNv
bnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0J1
aWx0aW5SZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0
aWFsaXplRXhlY3V0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0J1aWx0aW5SZWFkYWJsZVN0
cmVhbUJZT0JSZWFkZXJQcml2YXRlQ29uc3RydWN0b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQnVpbHRpblJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3RQcml2
YXRlQ29uc3RydWN0b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0
b3JIZWxwZXJNZXRob2RzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6
ZUV4ZWN1dGFibGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZSk6CisKIDIwMTgt
MDMtMjkgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzAwNjIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDc1NDhiYWMyMzdmMDI4ODU5MTA1MzFlMjhmMGM0ZDdjOTljYjdhODUuLjk5NDg1
NzRkYTVlYjZkMWQzNjgyODliZDNiOWRjNmQ2NmQ4MjZmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xNjc1LDcgKzE2NzUsNiBAQAogCQlEQ0YzRDU2RDFDRDI5NDc2MDAzRDVD
NjUgLyogTGF6eVByb3BlcnR5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRENGM0Q1NjgxQ0QyOTQ2ODAwM0Q1QzY1IC8qIExhenlQcm9wZXJ0
eUlubGluZXMuaCAqLzsgfTsKIAkJRENGREZCRDkxRDFGNUQ5QjAwRkUzRDcyIC8qIEIzQm90dG9t
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IERDRkRGQkQ3MUQxRjVEOTgwMEZFM0Q3MiAvKiBCM0JvdHRvbVByb3ZpZGVyLmggKi87IH07CiAJ
CURDRkRGQkRBMUQxRjVEOUUwMEZFM0Q3MiAvKiBCM1R5cGVNYXAuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRkRGQkQ4MUQxRjVEOTgwMEZFM0Q3MiAv
KiBCM1R5cGVNYXAuaCAqLzsgfTsKLQkJREUyNkU5MDMxQ0I1REQwNTAwRDJCRTgyIC8qIEJ1aWx0
aW5FeGVjdXRhYmxlQ3JlYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gREUyNkU5MDIxQ0I1REQwNTAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxl
Q3JlYXRvci5oICovOyB9OwogCQlERUE3RTI0NTFCQkM2NzdGMDBENzg0NDAgLyogSlNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTM5MTdFN0MxQjc5MTEwNjAwMEVCRDMzIC8qIEpTVHlwZWRBcnJheVZpZXdQcm90
b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMTI0QThGNzBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjRBOEY1MEU1NTU3NzUwMDMw
OTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUzMTYxODEzMUVDNUZFMTcwMDA2QTIxOCAvKiBET01Bbm5vdGF0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE2
MTgxMDFFQzVGRTA4MDAwNkEyMTggLyogRE9NQW5ub3RhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zMTYyLDYgKzMxNjEsNyBAQAogCQkx
Q0FBOEI0QTBEMzJDMzlBMDA0MUJDRkYgLyogSmF2YVNjcmlwdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDQUE4QjRCMEQzMkMzOUEwMDQxQkNGRiAvKiBKYXZhU2NyaXB0Q29yZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyMEVDQjE1RUZDNTI0NjI0QkMyRjAyRDUgLyogTW9kdWxlTmFtZXNw
YWNlQWNjZXNzQ2FzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
b2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMjIwQzYwQzYyMDZDRUFCRDAwRkM0NjM3IC8qIFBhcnNlckVycm9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBhcnNlckVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MjYwMEI1QTQxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU3RyaW5nSm9pbmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5n
Sm9pbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nSm9pbmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2MkQ4NUI0MUMwRDY1MEYwMDZBQ0I2
MSAvKiBBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcDsgcGF0aCA9
IGIzL2Fpci9BaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNDUxMyw4ICs0NTEzLDYgQEAKIAkJRENGM0Q1NjgxQ0QyOTQ2ODAwM0Q1
QzY1IC8qIExhenlQcm9wZXJ0eUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTGF6eVByb3BlcnR5SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlEQ0ZERkJENzFEMUY1RDk4MDBGRTNENzIgLyogQjNCb3R0b21Qcm92aWRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0JvdHRvbVByb3ZpZGVyLmg7IHBhdGggPSBiMy9C
M0JvdHRvbVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDRkRGQkQ4
MUQxRjVEOTgwMEZFM0Q3MiAvKiBCM1R5cGVNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQjNUeXBlTWFwLmg7IHBhdGggPSBiMy9CM1R5cGVNYXAuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJREUyNkU5MDIxQ0I1REQwNTAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVj
dXRhYmxlQ3JlYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWlsdGlu
RXhlY3V0YWJsZUNyZWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJREUyNkU5
MDYxQ0I1REQ5NjAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdWlsdGluRXhlY3V0YWJsZUNyZWF0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERTVBMDlGRjFCQTNBQzNFMDAzRDQ0
MjQgLyogSW50cmluc2ljRW1pdHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbnRyaW5zaWNFbWl0dGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wYXF1ZUpTU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUxMjRBOEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmlu
Zy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcGFxdWVKU1N0cmlu
Zy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MzY0LDYgKzYzNjIsNyBAQAog
CQkJCTkzRjBCM0FBMDlCQjREQzAwMDY4RkNFMyAvKiBQYXJzZXIuaCAqLywKIAkJCQk5MzA1MkMz
MjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovLAogCQkJCTkzMDUyQzMzMEZC
NzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5oICovLAorCQkJCTIyMEM2MEM2MjA2Q0VBQkQw
MEZDNDYzNyAvKiBQYXJzZXJFcnJvci5jcHAgKi8sCiAJCQkJMEZDQ0FFNDMxNkQwQ0Y2RTAwRDBD
NjVCIC8qIFBhcnNlckVycm9yLmggKi8sCiAJCQkJOUI0OTU0RTgxQTY2NDBEQjAwMjgxNUE2IC8q
IFBhcnNlckZ1bmN0aW9uSW5mby5oICovLAogCQkJCUE3N0YxODI0MTY0MTkyNTQwMDY0MEE0NyAv
KiBQYXJzZXJNb2Rlcy5oICovLApAQCAtNzkxOCw4ICs3OTE3LDYgQEAKIAkJCQk1QjgyNDMwNDFE
QjdBQTQ5MDBFQTYzODQgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcyAqLywKIAkJCQk4QkMw
NjQ4MjFFMTgwQjRBMDBCMkI4Q0EgLyogQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuanMgKi8sCiAJ
CQkJOEJDMDY0OTUxRTFEODM4QjAwQjJCOENBIC8qIEFzeW5jSXRlcmF0b3JQcm90b3R5cGUuanMg
Ki8sCi0JCQkJREUyNkU5MDYxQ0I1REQ5NjAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3Jl
YXRvci5jcHAgKi8sCi0JCQkJREUyNkU5MDIxQ0I1REQwNTAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVj
dXRhYmxlQ3JlYXRvci5oICovLAogCQkJCUE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWls
dGluRXhlY3V0YWJsZXMuY3BwICovLAogCQkJCUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBC
dWlsdGluRXhlY3V0YWJsZXMuaCAqLywKIAkJCQlFMzgwRDY2QjFGMTkyNDlEMDBBNTkwOTUgLyog
QnVpbHRpbk5hbWVzLmNwcCAqLywKQEAgLTgzNTEsNyArODM0OCw2IEBACiAJCQkJOUI0Njk0Mzkx
Rjk3NDM5RTAwQ0NCM0Y5IC8qIEJvb2xlYW5Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk5NkI3MzE5MUJEQTA2ODAwMDMzMUI4NCAvKiBCb29sZWFuUHJvdG90eXBlLmx1dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkVBMDg2MjAxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCBp
biBIZWFkZXJzICovLAotCQkJCURFMjZFOTAzMUNCNUREMDUwMEQyQkU4MiAvKiBCdWlsdGluRXhl
Y3V0YWJsZUNyZWF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2
QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NUVFOUIy
MThBQUI3RTIwMEFBRDA0MyAvKiBCdWlsdGluTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5
REEwMEE2MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGlucy5weSBpbiBIZWFkZXJzICovLApAQCAt
OTA0NCw3ICs5MDQwLDYgQEAKIAkJCQlBNTAzRkExRTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDEzQ0E4QzFC
NDkxQTk0MDBDQUU2MTMgLyogSlNKb2IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE2MEUx
NkY1Q0QwMEIzNDQ2MCAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJN0E5Nzc0QTgyMDZCODJFNDAwOEQwM0QwIC8qIEpTV2Vha1ZhbHVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzE4QzQyMzBFMTZGNUNEMDBCMzQ0NjAgLyogSlNMb2NrLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDMjVENzA5QzE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJBNEJCN0YzMThBNDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1
ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTkxMTYsNiArOTExMSw3IEBACiAJCQkJQTc0
ODJCOTMxMTY3MTE0NzAwM0IwNzEyIC8qIEpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMEIyODZCMUVCOEU2Q0YwMDBFQjVEMiAvKiBKU1dlYWtQcml2YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDlGQjg2ODFBRTMzNUM2MDAzOUQwNjkgLyogSlNXZWFr
U2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QTk3NzRBODIwNkI4MkU0MDA4RDAzRDAgLyogSlNX
ZWFrVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUFENUMzNkVCMUY3NUFENzMwMDBCQ0FBRiAv
KiBKU1dlYkFzc2VtYmx5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDlFODUyRjFFOEEwQzdDMDA4
REUzOUUgLyogSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlF
RkQ0ODQxRUJDMDQ1QzAwRjNERkVBIC8qIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5
cGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaGVhZGVyLnB5IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29t
YmluZWRfaGVhZGVyLnB5CmluZGV4IGNkZTM1N2NkNDM5Y2VhZjQ0NjQyOGU2ODE4ODQ3ODA3M2Mw
M2M0OWQuLjcyMTRjZGFhNTk0M2I4YmNjYWMzM2UyYzA3ZjlmZjNlYzEyNzdkOTQgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVy
YXRlX2NvbWJpbmVkX2hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkKQEAgLTY2LDEy
ICs2NiwxNyBAQCBjbGFzcyBCdWlsdGluc0NvbWJpbmVkSGVhZGVyR2VuZXJhdG9yKEJ1aWx0aW5z
R2VuZXJhdG9yKToKICAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQogCiAgICAg
ZGVmIGdlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKHNlbGYpOgotICAgICAgICByZXR1cm4g
IiIibmFtZXNwYWNlIEpTQyB7CisgICAgICAgIHJldHVybiAiIiIKKyNpbmNsdWRlIDx3dGYvRXhw
ZWN0ZWQuaD4KKworbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBj
bGFzcyBWTTsKK2NsYXNzIFBhcnNlckVycm9yOwogCiBlbnVtIGNsYXNzIENvbnN0cnVjdEFiaWxp
dHkgOiB1bnNpZ25lZDsKLX0iIiIKK30KKyIiIgogCiAgICAgZGVmIGdlbmVyYXRlX3NlY3Rpb25f
Zm9yX29iamVjdChzZWxmLCBvYmplY3QpOgogICAgICAgICBsaW5lcyA9IFtdCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0
ZV9zZXBhcmF0ZV9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWls
dGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkKaW5kZXggNThjOGYyYWM4
YTY0MTVhMjkxY2ZmODg4Y2YxZjY4MGMxZDY2MDQ3ZC4uMTg4OTYyNTliMmYzZWE2YTk2MDRhOWM0
OGUwZTE5NWQwNjhjYmYyYSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3Nl
cGFyYXRlX2hlYWRlci5weQpAQCAtOTIsNiArOTIsMTAgQEAgY2xhc3MgRnVuY3Rpb25FeGVjdXRh
YmxlOwogICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAiYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCIpLAogICAgICAgICAgICAgKSwKIAorICAgICAgICAgICAg
KFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicGFyc2Vy
L1BhcnNlckVycm9yLmgiKSwKKyAgICAgICAgICAgICksCisKICAgICAgICAgICAgIChbIldlYkNv
cmUiXSwKICAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgImJ1aWx0aW5zL0J1aWx0
aW5VdGlscy5oIiksCiAgICAgICAgICAgICApLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5CmluZGV4
IDkwN2E2ZDcxN2M5MTBjYjA3Mjk5NTA5YzYxZGY4NDZhOWM3MDFlZmMuLmRkOTg5NDc4N2FkOGM5
ZWY0YmZiNGUxMjQxM2QzYjlhNzdkZDRkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkKQEAg
LTY4LDE0ICs2OCwxNCBAQCBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKICAgICBD
b21iaW5lZEhlYWRlclN0YXRpY01hY3JvcyA9ICgKICAgICAiIiIjZGVmaW5lIERFQ0xBUkVfQlVJ
TFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFy
Z3VtZW50Q291bnQpIFxcCi0gICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNH
ZW5lcmF0b3IoSlNDOjpWTSYpOworICAgIEV4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
KiwgSlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CiAKICR7
bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFU
T1IpCiAjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUiIiIikKIAogICAgIFNlcGFyYXRl
SGVhZGVyU3RhdGljTWFjcm9zID0gKAogICAgICIiIiNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dF
TkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJndW1lbnRD
b3VudCkgXFwKLSAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRv
cihKU0M6OlZNJik7CisgICAgRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6
OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKIAogJHttYWNyb1By
ZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElO
X0dFTkVSQVRPUikKICN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SIiIiKQpAQCAtODMs
OSArODMsMTIgQEAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElO
X0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKICAgICBDb21iaW5lZEpTQ0ltcGxlbWVu
dGF0aW9uU3RhdGljTWFjcm9zID0gKAogICAgICIiIgogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9H
RU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50
Q291bnQpIFxcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihK
U0M6OlZNJiB2bSkgXFwKK0V4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQ
YXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKIHtcXAotICAg
IHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+
bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgc3Rk
OjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFwKKyAgICBhdXRvIGV4cGVjdGVk
VW5saW5rZWQgPSB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUo
KTtcXAorICAgIGlmICghZXhwZWN0ZWRVbmxpbmtlZC5oYXNfdmFsdWUoKSlcXAorICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXhwZWN0ZWRVbmxpbmtlZC5lcnJvcigpKTtcXAorICAgICAg
ICByZXR1cm4gZXhwZWN0ZWRVbmxpbmtlZC52YWx1ZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhl
Y3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFt
ZSMjSW50cmluc2ljKTtcXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUo
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRP
UgpAQCAtOTQsOSArOTcsMTIgQEAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUo
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogICAgIFNlcGFyYXRlSlNDSW1wbGVtZW50YXRpb25T
dGF0aWNNYWNyb3MgPSAoCiAgICAgIiIiCiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRP
Uihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJndW1lbnRDb3VudCkg
XFwKLUpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0m
IHZtKSBcXAorRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVy
cm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAoge1xcCi0gICAgcmV0dXJu
IHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZt
LCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxv
cHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAorICAgIGF1dG8gZXhwZWN0ZWRVbmxpbmtl
ZCA9IHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpO1xcCisg
ICAgaWYgKCFleHBlY3RlZFVubGlua2VkLmhhc192YWx1ZSgpKVxcCisgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChleHBlY3RlZFVubGlua2VkLmVycm9yKCkpO1xcCisgICAgcmV0dXJuIGV4
cGVjdGVkVW5saW5rZWQudmFsdWUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCkt
PmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNp
Yyk7XFwKIH0KICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9D
T0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5F
UkFUT1IKQEAgLTEwNSwxMCArMTExLDEwIEBAICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmpl
Y3RNYWNyb31fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICAgICBDb21i
aW5lZFdlYkNvcmVJbXBsZW1lbnRhdGlvblN0YXRpY01hY3JvcyA9ICgKICAgICAgICAgIiIiCiAj
ZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBv
dmVycmlkZGVuTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKLUpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
KiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAorRXhwZWN0ZWQ8SlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpT
Qzo6Vk0mIHZtKSBcXAoge1xcCiAgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcXAotICAgIHJldHVybiBj
bGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5j
b2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rp
b25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6
bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcXAorICAgIHJldHVybiBjbGllbnRE
YXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFt
ZSMjRXhlY3V0YWJsZSgpLnZhbHVlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5j
dGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgc3Rk
OjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFxcCiB9CiAke21hY3JvUHJlZml4
fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYg
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCkBAIC0xMTcsMTAgKzEyMywxMCBAQCAke21hY3JvUHJl
Zml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAgICAg
U2VwYXJhdGVXZWJDb3JlSW1wbGVtZW50YXRpb25TdGF0aWNNYWNyb3MgPSAoCiAgICAgICAgICIi
IgogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFt
ZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0
YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKK0V4cGVjdGVkPEpTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRv
cihKU0M6OlZNJiB2bSkgXFwKIHtcXAogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0g
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXFwKLSAgICByZXR1
cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5z
KCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1
bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBz
dGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXFwKKyAgICByZXR1cm4gY2xp
ZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29k
ZU5hbWUjI0V4ZWN1dGFibGUoKS52YWx1ZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGlu
RnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCks
IHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcXAogfQogJHttYWNyb1By
ZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5f
R0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpAQCAtMTM5LDcgKzE0
NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJM
RVMobmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgbGVuZ3RoKSBcXAotICAgIEpT
Qzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXFwKK0V4
cGVjdGVkPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9y
PiBuYW1lIyNFeGVjdXRhYmxlKCk7IFxcCiAgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1l
IyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CiAgICAgJHttYWNy
b1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoRVhQT1NFX0JVSUxU
SU5fRVhFQ1VUQUJMRVMpCiAjdW5kZWYgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMKQEAgLTE2
Miw3ICsxNjgsNyBAQCBwcml2YXRlOgogfTsKIAogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVD
VVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpIFxcCi1p
bmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogJHtvYmplY3ROYW1lfUJ1aWx0
aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFxcCitpbmxpbmUgRXhwZWN0ZWQ8SlNDOjpV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+ICR7b2JqZWN0TmFt
ZX1CdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFibGUoKSBcXAoge1xcCiAgICAgaWYgKCFt
XyMjbmFtZSMjRXhlY3V0YWJsZSkge1xcCiAgICAgICAgIEpTQzo6SWRlbnRpZmllciBleGVjdXRh
YmxlTmFtZSA9IGZ1bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpO1xcCkBAIC0yMDIsNyArMjA4LDcg
QEAgcHVibGljOgogaW5saW5lIHZvaWQgJHtvYmplY3ROYW1lfUJ1aWx0aW5GdW5jdGlvbnM6Omlu
aXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogI2RlZmluZSBFWFBPUlRf
RlVOQ1RJT04oY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGxlbmd0aClc
XAotICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZShtX3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0p
LCAmZ2xvYmFsT2JqZWN0KSk7CisgICAgbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1f
dm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlKG1fdm0sIGNvZGVOYW1l
IyNHZW5lcmF0b3IobV92bSkudmFsdWUoKSwgJmdsb2JhbE9iamVjdCkpOwogICAgICR7bWFjcm9Q
cmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKEVYUE9SVF9GVU5DVElP
TikKICN1bmRlZiBFWFBPUlRfRlVOQ1RJT04KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApp
bmRleCBhYTk2M2Y1Mjc1YzBlZGM4ZTY1NDc5NWViNWE4OWI5NjcxY2FlNWJjLi40OWY1N2RkYzI1
ZjNjMTM2MzcxNmE1YTgxZGE0NGQ4NTE5NWRjYzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CkBAIC0xNzksNyArMTc5LDYgQEAgYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcAogYmluZGlu
Z3MvU2NyaXB0VmFsdWUuY3BwCiAKIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKLWJ1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5jcHAKIGJ1aWx0aW5zL0J1aWx0aW5OYW1l
cy5jcHAKIAogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTY1NCw2ICs2NTMsNyBAQCBwYXJz
ZXIvTm9kZXMuY3BwCiBwYXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcAogcGFyc2VyL1BhcnNl
ci5jcHAKIHBhcnNlci9QYXJzZXJBcmVuYS5jcHAKK3BhcnNlci9QYXJzZXJFcnJvci5jcHAKIHBh
cnNlci9Tb3VyY2VQcm92aWRlci5jcHAKIHBhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlLmNwcAog
cGFyc2VyL1VubGlua2VkU291cmNlQ29kZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNzllN2U2ZWY5NWNlMjFjNDQzMjNhNmVhNDFkMzZh
MzNmYTM1OTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkJ1
aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5oIgotCi0jaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVz
LmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3Jl
YXRlQnVpbHRpbkV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBDb25zdHJ1Y3RvcktpbmQga2luZCwgQ29uc3RydWN0QWJp
bGl0eSBhYmlsaXR5KQotewotICAgIHJldHVybiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4
ZWN1dGFibGUodm0sIHNvdXJjZSwgaWRlbnQsIGtpbmQsIGFiaWxpdHkpOwotfQotICAgIAotfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDE5YzA4ODRiN2I2MWRmMDgwY2RhYzNhZTVjYjJkMDZlZTMzNWFlMTIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5oCisrKyAvZGV2L251bGwKQEAg
LTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQ29uc3RydWN0QWJpbGl0eS5oIgotI2luY2x1
ZGUgIlBhcnNlck1vZGVzLmgiCi0jaW5jbHVkZSAiU291cmNlQ29kZS5oIgotCi1uYW1lc3BhY2Ug
SlNDIHsKLQotSlNfRVhQT1JUX1BSSVZBVEUgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNy
ZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50
aWZpZXImLCBDb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHkpOwotCi19IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggYWQwZDgzOWFlMTkxODQwNDkzYzY1ZmM0MjgyZDQ3NTUy
MTA3MTZkYy4uZWY2OTk2MDYxMmEyYjliZTg3NGNjZGI4NjNkZjM5Yzg1ZWM1NDUxZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxl
cy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCisjaW5jbHVkZSA8d3RmL0V4
cGVjdGVkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewpAQCAtNTEsMjUgKzUyLDM0IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWls
dGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvcihDb25zdHJ1CiAgICAgY2Fz
ZSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29uc3Ry
dWN0b3JLaW5kOjpCYXNlOgotICAgICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBt
YWtlU291cmNlKGJhc2VDb25zdHJ1Y3RvckNvZGUsIHsgfSksIG5hbWUsIGNvbnN0cnVjdG9yS2lu
ZCwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0KTsKKyAgICAgICAgcmV0dXJuIGNyZWF0
ZUV4ZWN1dGFibGVPckNyYXNoKG1fdm0sIG1ha2VTb3VyY2UoYmFzZUNvbnN0cnVjdG9yQ29kZSwg
eyB9KSwgbmFtZSwgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1
Y3QpOwogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzOgotICAgICAgICByZXR1cm4g
Y3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBtYWtlU291cmNlKGRlcml2ZWRDb25zdHJ1Y3RvckNvZGUs
IHsgfSksIG5hbWUsIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3Ry
dWN0KTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUV4ZWN1dGFibGVPckNyYXNoKG1fdm0sIG1ha2VT
b3VyY2UoZGVyaXZlZENvbnN0cnVjdG9yQ29kZSwgeyB9KSwgbmFtZSwgY29uc3RydWN0b3JLaW5k
LCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QpOwogICAgIH0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1
dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiBjb2RlLCBj
b25zdCBJZGVudGlmaWVyJiBuYW1lLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkp
CitFeHBlY3RlZFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIEJ1aWx0aW5FeGVjdXRhYmxlczo6
Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoY29uc3QgU291cmNlQ29kZSYgY29kZSwgY29uc3QgSWRl
bnRpZmllciYgbmFtZSwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KQogewogICAg
IHJldHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIGNvZGUsIG5hbWUsIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgY29uc3RydWN0QWJpbGl0eSk7CiB9CiAKIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIGNv
ZGUsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJp
bGl0eSkKIHsKLSAgICByZXR1cm4gQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxl
KHZtLCBjb2RlLCBuYW1lLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGNvbnN0cnVjdEFiaWxpdHkp
OworICAgIHJldHVybiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGVPckNyYXNo
KHZtLCBjb2RlLCBuYW1lLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGNvbnN0cnVjdEFiaWxpdHkp
OwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpj
cmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1
Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlT3JDcmFzaChWTSYgdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KQor
eworICAgIGF1dG8gZXhwZWN0ZWQgPSBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFi
bGUodm0sIHNvdXJjZSwgbmFtZSwgY29uc3RydWN0b3JLaW5kLCBjb25zdHJ1Y3RBYmlsaXR5KTsK
KyAgICBpZiAoIWV4cGVjdGVkLmhhc192YWx1ZSgpKSB7CisgICAgICAgIGRhdGFMb2dMbigiRmF0
YWwgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW4gZnVuY3Rpb24gJyIsIG5hbWUuc3RyaW5nKCksICIn
Iik7CisgICAgICAgIENSQVNIKCk7CisgICAgfQorICAgIHJldHVybiBleHBlY3RlZC52YWx1ZSgp
OworfQorCitFeHBlY3RlZFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIEJ1aWx0aW5FeGVjdXRh
Ymxlczo6Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
Y29uc3QgSWRlbnRpZmllciYgbmFtZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwg
Q29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KQogewogICAgIEpTVGV4dFBvc2l0aW9u
IHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7CiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CkBAIC04
Myw4ICs5Myw4IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJs
ZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTCiAgICAgICAgICZwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lLCBjb25zdHJ1Y3RvcktpbmQpOwogCiAgICAgaWYgKCFwcm9ncmFtKSB7
Ci0gICAgICAgIGRhdGFMb2coIkZhdGFsIGVycm9yIGNvbXBpbGluZyBidWlsdGluIGZ1bmN0aW9u
ICciLCBuYW1lLnN0cmluZygpLCAiJzogIiwgZXJyb3IubWVzc2FnZSgpKTsKLSAgICAgICAgQ1JB
U0goKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1vdmUoZXJyb3IpKTsKICAgICB9CiAKICAgICBTdGF0
ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50KCk7CkBA
IC0xMDYsNyArMTE2LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFMKICAgICBtZXRhZGF0YS0+
b3ZlcnJpZGVOYW1lKG5hbWUpOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZHVtbXlURFpWYXJp
YWJsZXM7CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFk
YXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMs
IGR1bW15VERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIFdURk1vdmUocGFy
ZW50U291cmNlT3ZlcnJpZGUpKTsKLSAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxlOworICAg
IHJldHVybiBFeHBlY3RlZFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKGZ1bmN0aW9uRXhlY3V0
YWJsZSk7CiB9CiAKIHZvaWQgQnVpbHRpbkV4ZWN1dGFibGVzOjpmaW5hbGl6ZShIYW5kbGU8VW5r
bm93bj4sIHZvaWQqIGNvbnRleHQpCkBAIC0xMTUsMTUgKzEyNSwxOCBAQCB2b2lkIEJ1aWx0aW5F
eGVjdXRhYmxlczo6ZmluYWxpemUoSGFuZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0KQogfQog
CiAjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwg
b3ZlcnJpZGVOYW1lLCBsZW5ndGgpIFwKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWls
dGluRXhlY3V0YWJsZXM6Om5hbWUjI0V4ZWN1dGFibGUoKSBcCitFeHBlY3RlZFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlIEJ1aWx0aW5FeGVjdXRhYmxlczo6bmFtZSMjRXhlY3V0YWJsZSgpIFwK
IHtcCiAgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSkge1wKICAgICAgICAgSWRlbnRpZmll
ciBleGVjdXRhYmxlTmFtZSA9IG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZnVu
Y3Rpb25OYW1lIyNQdWJsaWNOYW1lKCk7XAogICAgICAgICBpZiAob3ZlcnJpZGVOYW1lKVwKICAg
ICAgICAgICAgIGV4ZWN1dGFibGVOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmbV92bSwg
b3ZlcnJpZGVOYW1lKTtcCi0gICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gV2VhazxVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4oY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV8jI25hbWUj
I1NvdXJjZSwgZXhlY3V0YWJsZU5hbWUsIHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhp
cywgJm1fIyNuYW1lIyNFeGVjdXRhYmxlKTtcCisgICAgICAgIEV4cGVjdGVkVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUgZiA9IGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fIyNuYW1lIyNTb3Vy
Y2UsIGV4ZWN1dGFibGVOYW1lLCBzXyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSk7XAorICAgICAg
ICBpZiAoIWYuaGFzX3ZhbHVlKCkpXAorICAgICAgICAgICAgcmV0dXJuIGY7XAorICAgICAgICBt
XyMjbmFtZSMjRXhlY3V0YWJsZSA9IFdlYWs8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KGYu
dmFsdWUoKSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRhYmxlKTtcCiAgICAgfVwKLSAgICByZXR1
cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7XAorICAgIHJldHVybiBFeHBlY3RlZFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpKTtcCiB9CiBK
U0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCiAjdW5k
ZWYgRVhQT1NFX0JVSUxUSU5fU09VUkNFUwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCmluZGV4IDM2OGEzMWI3YWNiNmEzMmM5ZDU4
ZTVkZTI4MDFjMjg5YmJmNTJhMmYuLmNlNTA4YmUzNjQwNGNmMjVmODU5NmExOGZjM2UwZmU1NTli
NjgyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmgKQEAgLTI2LDEwICsyNiwxMSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJKU0NCdWlsdGlucy5oIgotI2luY2x1ZGUgIlBhcnNlck1vZGVzLmgiCisjaW5jbHVkZSAi
UGFyc2VyLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgogI2luY2x1ZGUgIldlYWsuaCIKICNp
bmNsdWRlICJXZWFrSGFuZGxlT3duZXIuaCIKKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM3LDEzICszOCwxNSBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTsKIGNsYXNzIElkZW50aWZpZXI7CiBjbGFzcyBWTTsKIAordXNpbmcgRXhw
ZWN0ZWRVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSA9IEV4cGVjdGVkPFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiwgUGFyc2VyRXJyb3I+OworCiBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXMg
ZmluYWw6IHByaXZhdGUgV2Vha0hhbmRsZU93bmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBCdWlsdGluRXhlY3V0YWJsZXMoVk0mKTsKIAog
I2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIG92
ZXJyaWRkZW5OYW1lLCBsZW5ndGgpIFwKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1l
IyNFeGVjdXRhYmxlKCk7IFwKK0V4cGVjdGVkVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgbmFt
ZSMjRXhlY3V0YWJsZSgpOyBcCiBjb25zdCBTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSB7IHJl
dHVybiBtXyMjbmFtZSMjU291cmNlOyB9CiAgICAgCiAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9D
T0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQpAQCAtNTEsMTMgKzU0LDE0IEBAIGNvbnN0
IFNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0K
IAogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVEZWZhdWx0Q29uc3RydWN0
b3IoQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKIAotICAgIHN0YXRp
YyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRXhlY3V0YWJsZShWTSYsIGNvbnN0
IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgQ29uc3RydWN0b3JLaW5kLCBDb25zdHJ1
Y3RBYmlsaXR5KTsKKyAgICBzdGF0aWMgRXhwZWN0ZWRVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSBjcmVhdGVFeGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZp
ZXImLCBDb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHkpOworICAgIHN0YXRpYyBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRXhlY3V0YWJsZU9yQ3Jhc2goVk0mLCBjb25z
dCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIENvbnN0cnVjdG9yS2luZCwgQ29uc3Ry
dWN0QWJpbGl0eSk7CiBwcml2YXRlOgogICAgIHZvaWQgZmluYWxpemUoSGFuZGxlPFVua25vd24+
LCB2b2lkKiBjb250ZXh0KSBvdmVycmlkZTsKIAogICAgIFZNJiBtX3ZtOwogCi0gICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvdXJj
ZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgQ29uc3RydWN0QWJpbGl0eSk7CisgICAgRXhwZWN0
ZWRVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25z
dCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIENvbnN0cnVjdEFiaWxpdHkpOwogCiAj
ZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUs
IG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpXAogICAgIFNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJj
ZTsgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCmluZGV4IDBlZGZlM2RmNGVmNjM4YzExMjVhN2MyYTM5MGIzODBhNGQy
YzIxNDYuLmRkYjQ2MTIyNmUzNzQ2NTZhZjBiMTI1OWYzNWM4OTdmNmEzYzUxMTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9u
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckVycm9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJyb3IuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjJmOWFjN2FiNDNmMGNjYzQ3YzRjYzFiYjlkYjBiZmY4ZGYzZDhlMjUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckVycm9yLmNwcApA
QCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgorCisj
aW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVy
cy5oIgorI2luY2x1ZGUgIkhlYXBDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKK0pTT2JqZWN0KiBQYXJzZXJFcnJvcjo6dG9F
cnJvck9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIGludCBvdmVycmlkZUxpbmVOdW1iZXIpCit7CisgICAgRXhlY1N0YXRlKiBleGVj
ID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAg
ICBjYXNlIEVycm9yTm9uZToKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgY2FzZSBTeW50
YXhFcnJvcjogeworICAgICAgICBhdXRvIHN5bnRheEVycm9yID0gY3JlYXRlU3ludGF4RXJyb3Io
ZXhlYywgbV9tZXNzYWdlKTsKKyAgICAgICAgYXV0byBsaW5lID0gb3ZlcnJpZGVMaW5lTnVtYmVy
ID09IC0xID8gbV9saW5lIDogb3ZlcnJpZGVMaW5lTnVtYmVyOworICAgICAgICByZXR1cm4gYWRk
RXJyb3JJbmZvKGV4ZWMsIHN5bnRheEVycm9yLCBsaW5lLCBzb3VyY2UpOworICAgIH0KKyAgICBj
YXNlIEV2YWxFcnJvcjoKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIG1f
bWVzc2FnZSk7CisgICAgY2FzZSBTdGFja092ZXJmbG93OiB7CisgICAgICAgIEVycm9ySGFuZGxp
bmdTY29wZSBlcnJvclNjb3BlKGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgIHJldHVybiBj
cmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgfQorICAgIGNhc2UgT3V0T2ZNZW1v
cnk6CisgICAgICAgIHJldHVybiBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgIH0K
KyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitKU09iamVjdCogUGFyc2Vy
RXJyb3I6OnRocm93U3RhY2tPdmVyZmxvd09yT3V0T2ZNZW1vcnkoRXhlY1N0YXRlKiBleGVjKQor
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIEVycm9yTm9u
ZToKKyAgICBjYXNlIEV2YWxFcnJvcjoKKyAgICBjYXNlIFN5bnRheEVycm9yOgorICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2UgU3RhY2tPdmVyZmxvdzoKKyAg
ICAgICAgcmV0dXJuIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICBj
YXNlIE91dE9mTWVtb3J5OgorICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4
ZWMsIHNjb3BlKTsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
K30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKK3ZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJvclR5cGUgdHlw
ZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN5
bnRheEVycm9yTm9uZToKKyAgICAgICAgb3V0LnByaW50KCJTeW50YXhFcnJvck5vbmUiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JJcnJl
Y292ZXJhYmxlOgorICAgICAgICBvdXQucHJpbnQoIlN5bnRheEVycm9ySXJyZWNvdmVyYWJsZSIp
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJv
clVudGVybWluYXRlZExpdGVyYWw6CisgICAgICAgIG91dC5wcmludCgiU3ludGF4RXJyb3JVbnRl
cm1pbmF0ZWRMaXRlcmFsIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6UGFyc2Vy
RXJyb3I6OlN5bnRheEVycm9yUmVjb3ZlcmFibGU6CisgICAgICAgIG91dC5wcmludCgiU3ludGF4
RXJyb3JSZWNvdmVyYWJsZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYgb3V0LCBKU0M6OlBhcnNlckVycm9yOjpFcnJvclR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2gg
KHR5cGUpIHsKKyAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OkVycm9yTm9uZToKKyAgICAgICAg
b3V0LnByaW50KCJFcnJvck5vbmUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpQ
YXJzZXJFcnJvcjo6U3RhY2tPdmVyZmxvdzoKKyAgICAgICAgb3V0LnByaW50KCJTdGFja092ZXJm
bG93Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OkV2YWxF
cnJvcjoKKyAgICAgICAgb3V0LnByaW50KCJFdmFsRXJyb3IiKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6T3V0T2ZNZW1vcnk6CisgICAgICAgIG91dC5wcmlu
dCgiT3V0T2ZNZW1vcnkiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpQYXJzZXJF
cnJvcjo6U3ludGF4RXJyb3I6CisgICAgICAgIG91dC5wcmludCgiU3ludGF4RXJyb3IiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlckVycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ckVycm9yLmgKaW5kZXggNzg4M2VmZWQyMjUwMjJjMDIwNmI3ODY0MGI1YTcxNzg5ZDljZWE1Mi4u
YzBiYzM5OTRlMWIyYzQ5MDY2OWE3Yzg4OGM4N2U2NjZhMDhiMmE0MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJFcnJvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJyb3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsOSArMjUsNiBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIkVycm9yLmgiCi0jaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3Bl
LmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIlBhcnNlclRva2Vu
cy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC04NCwzMSArODEsOCBA
QCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9t
ZXNzYWdlOyB9CiAgICAgaW50IGxpbmUoKSBjb25zdCB7IHJldHVybiBtX2xpbmU7IH0KIAotICAg
IEpTT2JqZWN0KiB0b0Vycm9yT2JqZWN0KAotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIAotICAgICAgICBpbnQgb3ZlcnJpZGVM
aW5lTnVtYmVyID0gLTEpCi0gICAgewotICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAg
Y2FzZSBFcnJvck5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgY2Fz
ZSBTeW50YXhFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBhZGRFcnJvckluZm8oCi0gICAgICAg
ICAgICAgICAgZXhlYywgCi0gICAgICAgICAgICAgICAgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywg
bV9tZXNzYWdlKSwgCi0gICAgICAgICAgICAgICAgb3ZlcnJpZGVMaW5lTnVtYmVyID09IC0xID8g
bV9saW5lIDogb3ZlcnJpZGVMaW5lTnVtYmVyLCBzb3VyY2UpOwotICAgICAgICBjYXNlIEV2YWxF
cnJvcjoKLSAgICAgICAgICAgIHJldHVybiBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBtX21lc3Nh
Z2UpOwotICAgICAgICBjYXNlIFN0YWNrT3ZlcmZsb3c6IHsKLSAgICAgICAgICAgIEVycm9ySGFu
ZGxpbmdTY29wZSBlcnJvclNjb3BlKGdsb2JhbE9iamVjdC0+dm0oKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgT3V0T2ZNZW1vcnk6Ci0gICAgICAgICAgICByZXR1cm4gY3JlYXRlT3V0T2ZNZW1vcnlF
cnJvcihleGVjKTsKLSAgICAgICAgfQotICAgICAgICBDUkFTSCgpOwotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICB9CisgICAgSlNPYmplY3QqIHRvRXJyb3JPYmplY3QoSlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgaW50IG92ZXJyaWRlTGluZU51bWJlciA9IC0xKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dTdGFja092ZXJmbG93T3JPdXRPZk1l
bW9yeShFeGVjU3RhdGUqID0gbnVsbHB0cik7CiAKIHByaXZhdGU6CiAgICAgSlNUb2tlbiBtX3Rv
a2VuOwpAQCAtMTIxLDQ4ICs5NSw2IEBAIHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAog
bmFtZXNwYWNlIFdURiB7Ci0KLWlubGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgSlNDOjpQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JUeXBlIHR5cGUpCi17Ci0gICAgc3dp
dGNoICh0eXBlKSB7Ci0gICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJvck5vbmU6
Ci0gICAgICAgIG91dC5wcmludCgiU3ludGF4RXJyb3JOb25lIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9ySXJyZWNvdmVyYWJsZToKLSAg
ICAgICAgb3V0LnByaW50KCJTeW50YXhFcnJvcklycmVjb3ZlcmFibGUiKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JVbnRlcm1pbmF0ZWRM
aXRlcmFsOgotICAgICAgICBvdXQucHJpbnQoIlN5bnRheEVycm9yVW50ZXJtaW5hdGVkTGl0ZXJh
bCIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhF
cnJvclJlY292ZXJhYmxlOgotICAgICAgICBvdXQucHJpbnQoIlN5bnRheEVycm9yUmVjb3ZlcmFi
bGUiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotfQotCi1pbmxpbmUgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiBvdXQsIEpTQzo6UGFyc2VyRXJyb3I6OkVycm9yVHlwZSB0eXBlKQotewotICAgIHN3aXRjaCAo
dHlwZSkgewotICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6RXJyb3JOb25lOgotICAgICAgICBv
dXQucHJpbnQoIkVycm9yTm9uZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBKU0M6OlBh
cnNlckVycm9yOjpTdGFja092ZXJmbG93OgotICAgICAgICBvdXQucHJpbnQoIlN0YWNrT3ZlcmZs
b3ciKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6RXZhbEVy
cm9yOgotICAgICAgICBvdXQucHJpbnQoIkV2YWxFcnJvciIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpPdXRPZk1lbW9yeToKLSAgICAgICAgb3V0LnByaW50
KCJPdXRPZk1lbW9yeSIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBKU0M6OlBhcnNlckVy
cm9yOjpTeW50YXhFcnJvcjoKLSAgICAgICAgb3V0LnByaW50KCJTeW50YXhFcnJvciIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19Ci0KK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6UGFyc2VyRXJy
b3I6OlN5bnRheEVycm9yVHlwZSk7Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBK
U0M6OlBhcnNlckVycm9yOjpFcnJvclR5cGUpOwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5
cGUuY3BwCmluZGV4IDgwMGNmYTA5NjQxYzBjYTI4MDhmMDU2MDEyZWRhM2QwMjMyMjM3ZjcuLjE3
NjE5OTA5YzUzZjRmZDUwY2IyZDM0Y2I0ZDhhMjRiNDcyYjkxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuY3Bw
CkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgQXN5bmNJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgQVNTRVJUKGlu
aGVyaXRzKHZtLCBpbmZvKCkpKTsKICAgICBkaWRCZWNvbWVQcm90b3R5cGUoKTsKIAotICAgIEpT
RnVuY3Rpb24qIGFzeW5jSXRlcmF0b3JQcm90b3R5cGVGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgYXN5bmNJdGVyYXRvclByb3RvdHlwZVN5bWJvbEFzeW5jSXRlcmF0b3JHZXR0ZXJD
b2RlR2VuZXJhdG9yKHZtKSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBKU0Z1bmN0aW9uKiBhc3luY0l0
ZXJhdG9yUHJvdG90eXBlRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGFzeW5jSXRl
cmF0b3JQcm90b3R5cGVTeW1ib2xBc3luY0l0ZXJhdG9yR2V0dGVyQ29kZUdlbmVyYXRvcih2bSku
dmFsdWUoKSwgZ2xvYmFsT2JqZWN0KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+YXN5bmNJdGVyYXRvclN5bWJvbCwgYXN5bmNJdGVyYXRvclBy
b3RvdHlwZUZ1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uUHJvdG90eXBlLmNwcAppbmRleCBkMGZkNzYyNDdjYmMxNmI2MGE0YmEyZTRkM2Iz
NWU4OGU2ZTQ5ZmQ5Li5hNmVkMzVhMDA2ZjQ4MjAwNzdjZGZlN2FmOWQxM2M0MjgwMTQzODcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuY3BwCkBAIC02MywxMSArNjMsMTEgQEAgdm9pZCBGdW5jdGlvblByb3RvdHlwZTo6YWRkRnVu
Y3Rpb25Qcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGcKICAgICBK
U0Z1bmN0aW9uKiB0b1N0cmluZ0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nLnN0cmluZygpLCBmdW5jdGlv
blByb3RvRnVuY1RvU3RyaW5nKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcsIHRvU3RyaW5nRnVuY3Rpb24sIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAotICAgICphcHBseUZ1
bmN0aW9uID0gcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGds
b2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXBwbHlQdWJsaWNO
YW1lKCksIGZ1bmN0aW9uUHJvdG90eXBlQXBwbHlDb2RlR2VuZXJhdG9yKHZtKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgICpjYWxsRnVu
Y3Rpb24gPSBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jYWxsUHVibGljTmFt
ZSgpLCBmdW5jdGlvblByb3RvdHlwZUNhbGxDb2RlR2VuZXJhdG9yKHZtKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIHB1dERpcmVjdEJ1
aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIHZtLnByb3Bl
cnR5TmFtZXMtPmJpbmQsIGZ1bmN0aW9uUHJvdG90eXBlQmluZENvZGVHZW5lcmF0b3Iodm0pLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAg
KmFwcGx5RnVuY3Rpb24gPSBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hcHBs
eVB1YmxpY05hbWUoKSwgZnVuY3Rpb25Qcm90b3R5cGVBcHBseUNvZGVHZW5lcmF0b3Iodm0pLnZh
bHVlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKKyAgICAqY2FsbEZ1bmN0aW9uID0gcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuY2FsbFB1YmxpY05hbWUoKSwgZnVuY3Rpb25Qcm90b3R5cGVDYWxsQ29kZUdlbmVyYXRvcih2
bSkudmFsdWUoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOworICAgIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmJpbmQsIGZ1bmN0aW9uUHJvdG90eXBl
QmluZENvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAotICAgICpoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0
aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBmdW5jdGlvblByb3RvdHlwZVN5bWJvbEhhc0lu
c3RhbmNlQ29kZUdlbmVyYXRvcih2bSksIGdsb2JhbE9iamVjdCk7CisgICAgKmhhc0luc3RhbmNl
U3ltYm9sRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uUHJvdG90eXBl
U3ltYm9sSGFzSW5zdGFuY2VDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpLCBnbG9iYWxPYmplY3Qp
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5o
YXNJbnN0YW5jZVN5bWJvbCwgKmhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24sIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA4Zjg0MGNjNDdkZjQyMzU1MGQ1
M2M0ODY4NTNjZGJkOWNiYWE2ZTVlLi5kOWE5YTI3MDFjYTZkODQxMThhZjk2MzI2ZWNkMjJhMTlj
ZGFhNDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC00NDMsMjQgKzQ0MywyNCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0
KFZNJiB2bSkKICAgICAgICAgfSk7CiAgICAgbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24uaW5p
dExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQp
IHsKLSAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBhcnJh
eVByb3RvdHlwZVZhbHVlc0NvZGVHZW5lcmF0b3IoaW5pdC52bSksIGluaXQub3duZXIpKTsKKyAg
ICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBhcnJheVByb3Rv
dHlwZVZhbHVlc0NvZGVHZW5lcmF0b3IoaW5pdC52bSkudmFsdWUoKSwgaW5pdC5vd25lcikpOwog
ICAgICAgICB9KTsKICAgICBtX2luaXRpYWxpemVQcm9taXNlRnVuY3Rpb24uaW5pdExhdGVyKAog
ICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKLSAgICAg
ICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBwcm9taXNlT3BlcmF0
aW9uc0luaXRpYWxpemVQcm9taXNlQ29kZUdlbmVyYXRvcihpbml0LnZtKSwgaW5pdC5vd25lcikp
OworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIHByb21p
c2VPcGVyYXRpb25zSW5pdGlhbGl6ZVByb21pc2VDb2RlR2VuZXJhdG9yKGluaXQudm0pLnZhbHVl
KCksIGluaXQub3duZXIpKTsKICAgICAgICAgfSk7CiAKICAgICBtX2l0ZXJhdG9yUHJvdG9jb2xG
dW5jdGlvbi5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Z1bmN0
aW9uPiYgaW5pdCkgewotICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGlu
aXQudm0sIGl0ZXJhdG9ySGVscGVyc1BlcmZvcm1JdGVyYXRpb25Db2RlR2VuZXJhdG9yKGluaXQu
dm0pLCBpbml0Lm93bmVyKSk7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVh
dGUoaW5pdC52bSwgaXRlcmF0b3JIZWxwZXJzUGVyZm9ybUl0ZXJhdGlvbkNvZGVHZW5lcmF0b3Io
aW5pdC52bSkudmFsdWUoKSwgaW5pdC5vd25lcikpOwogICAgICAgICB9KTsKIAogICAgIG1fcHJv
bWlzZVJlc29sdmVGdW5jdGlvbi5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFs
aXplcjxKU0Z1bmN0aW9uPiYgaW5pdCkgewotICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlv
bjo6Y3JlYXRlKGluaXQudm0sIHByb21pc2VDb25zdHJ1Y3RvclJlc29sdmVDb2RlR2VuZXJhdG9y
KGluaXQudm0pLCBpbml0Lm93bmVyKSk7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9u
OjpjcmVhdGUoaW5pdC52bSwgcHJvbWlzZUNvbnN0cnVjdG9yUmVzb2x2ZUNvZGVHZW5lcmF0b3Io
aW5pdC52bSkudmFsdWUoKSwgaW5pdC5vd25lcikpOwogICAgICAgICB9KTsKIAotICAgIG1fbmV3
UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgcHJvbWlzZU9wZXJhdGlvbnNOZXdQcm9taXNlQ2FwYWJpbGl0eUNvZGVHZW5lcmF0b3Io
dm0pLCB0aGlzKSk7CisgICAgbV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uLnNldCh2bSwg
dGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBwcm9taXNlT3BlcmF0aW9uc05ld1Byb21pc2VD
YXBhYmlsaXR5Q29kZUdlbmVyYXRvcih2bSkudmFsdWUoKSwgdGhpcykpOwogICAgIG1fZnVuY3Rp
b25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBoYXNJbnN0YW5j
ZVN5bWJvbEZ1bmN0aW9uKTsKICAgICBtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyLmluaXRM
YXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEdldHRlclNldHRlcj4mIGluaXQp
IHsKQEAgLTQ5MSw3ICs0OTEsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkK
ICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5pbml0UmVzdHJpY3RlZFByb3BlcnRpZXMoZXhlYywg
dGhpcyk7CiAKICAgICBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXIuc2V0KHZtLCB0aGlzLCBHZXR0ZXJT
ZXR0ZXI6OmNyZWF0ZSh2bSwgdGhpcykpOwotICAgIG1fc3BlY2llc0dldHRlclNldHRlci0+c2V0
R2V0dGVyKHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9wZXJhdGlvbnNT
cGVjaWVzR2V0dGVyQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpKTsKKyAgICBtX3NwZWNpZXNHZXR0
ZXJTZXR0ZXItPnNldEdldHRlcih2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9i
YWxPcGVyYXRpb25zU3BlY2llc0dldHRlckNvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIHRoaXMp
KTsKIAogICAgIG1fdHlwZWRBcnJheVByb3RvLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0
IEluaXRpYWxpemVyPEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU+JiBpbml0KSB7CkBAIC01MTMs
NyArNTEzLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgIFtd
IChMYXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVyJiBpbml0KSB7IFwKICAgICAgICAgICAg
IGluaXQuc2V0UHJvdG90eXBlKEpTICMjIHR5cGUgIyMgQXJyYXlQcm90b3R5cGU6OmNyZWF0ZShp
bml0LnZtLCBpbml0Lmdsb2JhbCwgSlMgIyMgdHlwZSAjIyBBcnJheVByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBpbml0Lmdsb2JhbC0+bV90eXBlZEFycmF5
UHJvdG8uZ2V0KGluaXQuZ2xvYmFsKSkpKTsgXAogICAgICAgICAgICAgaW5pdC5zZXRTdHJ1Y3R1
cmUoSlMgIyMgdHlwZSAjIyBBcnJheTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xv
YmFsLCBpbml0LnByb3RvdHlwZSkpOyBcCi0gICAgICAgICAgICBpbml0LnNldENvbnN0cnVjdG9y
KEpTICMjIHR5cGUgIyMgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGluaXQudm0sIGluaXQuZ2xv
YmFsLCBKUyAjIyB0eXBlICMjIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShpbml0
LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm1fdHlwZWRBcnJheVN1cGVyQ29uc3RydWN0
b3IuZ2V0KGluaXQuZ2xvYmFsKSksIGluaXQucHJvdG90eXBlLCBBU0NJSUxpdGVyYWwoI3R5cGUg
IkFycmF5IiksIHR5cGVkQXJyYXlDb25zdHJ1Y3RvckFsbG9jYXRlICMjIHR5cGUgIyMgQXJyYXlD
b2RlR2VuZXJhdG9yKGluaXQudm0pKSk7IFwKKyAgICAgICAgICAgIGluaXQuc2V0Q29uc3RydWN0
b3IoSlMgIyMgdHlwZSAjIyBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5n
bG9iYWwsIEpTICMjIHR5cGUgIyMgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGlu
aXQudm0sIGluaXQuZ2xvYmFsLCBpbml0Lmdsb2JhbC0+bV90eXBlZEFycmF5U3VwZXJDb25zdHJ1
Y3Rvci5nZXQoaW5pdC5nbG9iYWwpKSwgaW5pdC5wcm90b3R5cGUsIEFTQ0lJTGl0ZXJhbCgjdHlw
ZSAiQXJyYXkiKSwgdHlwZWRBcnJheUNvbnN0cnVjdG9yQWxsb2NhdGUgIyMgdHlwZSAjIyBBcnJh
eUNvZGVHZW5lcmF0b3IoaW5pdC52bSkudmFsdWUoKSkpOyBcCiAgICAgICAgICAgICBpbml0Lmds
b2JhbC0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oaW5pdC52bSwgaW5pdC52bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS50eXBlICMjIEFycmF5UHJpdmF0ZU5hbWUoKSwgaW5pdC5j
b25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOyBcCiAgICAgICAgIH0pOwogICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhD
TFVESU5HX0RBVEFfVklFVyhJTklUX1RZUEVEX0FSUkFZX0xBVEVSKQpAQCAtODM3LDcgKzgzNyw3
IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNO
YW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgSlNPYmplY3QqIHJlZ0V4cFN5bWJvbFJl
cGxhY2UgPSBhc09iamVjdChtX3JlZ0V4cFByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5yZXBsYWNlU3ltYm9sKS5hc0NlbGwoKSk7CiAgICAgbV9yZWdFeHBQcm90b1N5
bWJvbFJlcGxhY2Uuc2V0KHZtLCB0aGlzLCByZWdFeHBTeW1ib2xSZXBsYWNlKTsKIAotI2RlZmlu
ZSBDUkVBVEVfUFJJVkFURV9HTE9CQUxfRlVOQ1RJT04obmFtZSwgY29kZSkgSlNGdW5jdGlvbiog
bmFtZSAjIyBQcml2YXRlRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGUgIyMg
Q29kZUdlbmVyYXRvcih2bSksIHRoaXMpOworI2RlZmluZSBDUkVBVEVfUFJJVkFURV9HTE9CQUxf
RlVOQ1RJT04obmFtZSwgY29kZSkgSlNGdW5jdGlvbiogbmFtZSAjIyBQcml2YXRlRnVuY3Rpb24g
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGUgIyMgQ29kZUdlbmVyYXRvcih2bSkudmFsdWUo
KSwgdGhpcyk7CiAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9QUklWQVRFX0dMT0JB
TF9OQU1FKENSRUFURV9QUklWQVRFX0dMT0JBTF9GVU5DVElPTikKICN1bmRlZiBDUkVBVEVfUFJJ
VkFURV9HTE9CQUxfRlVOQ1RJT04KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCmluZGV4IDI1MjU5MTNkZjM3MzMxZjU3YTdiNTI1YzZmMDEyMDgwNWE3ZWZjZDIu
LmJlNmRjOTkzMTdlOTU5ZTIzOTJhZTcwYjgxN2NhODQwNjU4NDNmMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTIwMzQsMTIgKzIwMzQsMTUgQEAg
Ym9vbCBKU09iamVjdDo6Z2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgZG91Ymxl
JiBudW1iZXIsIEpTVmFsdWUmIHJlc3UKICAgICByZXR1cm4gIXJlc3VsdC5pc1N0cmluZygpOwog
fQogCi1ib29sIEpTT2JqZWN0OjpnZXRPd25TdGF0aWNQcm9wZXJ0eVNsb3QoVk0mIHZtLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTT2JqZWN0
OjpnZXRPd25TdGF0aWNQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgZm9y
IChhdXRvKiBpbmZvID0gY2xhc3NJbmZvKHZtKTsgaW5mbzsgaW5mbyA9IGluZm8tPnBhcmVudENs
YXNzKSB7CiAgICAgICAgIGlmIChhdXRvKiB0YWJsZSA9IGluZm8tPnN0YXRpY1Byb3BIYXNoVGFi
bGUpIHsKLSAgICAgICAgICAgIGlmIChnZXRTdGF0aWNQcm9wZXJ0eVNsb3RGcm9tVGFibGUodm0s
IHRhYmxlLT5jbGFzc0ZvclRoaXMsICp0YWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KSkK
KyAgICAgICAgICAgIGlmIChnZXRTdGF0aWNQcm9wZXJ0eVNsb3RGcm9tVGFibGUoZXhlYywgdGFi
bGUtPmNsYXNzRm9yVGhpcywgKnRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAg
LTIzMjUsNiArMjMyOCw3IEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5QWxsU3RhdGljUHJvcGVydGll
cyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgQVNTRVJUKCFzdGF0aWNQcm9wZXJ0aWVzUmVpZmll
ZCgpKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIElmIHRoaXMgb2JqZWN0J3MgQ2xhc3NJbmZvIGhh
cyBubyBzdGF0aWMgcHJvcGVydGllcywgdGhlbiBub3RoaW5nIHRvIHJlaWZ5IQogICAgIC8vIFdl
IGNhbiBzYWZlbHkgc2V0IHRoZSBmbGFnIHRvIGF2b2lkIHRoZSBleHBlbnNpdmUgY2hlY2sgYWdh
aW4gaW4gdGhlIGZ1dHVyZS4KQEAgLTIzNDUsOCArMjM0OSwxMCBAQCB2b2lkIEpTT2JqZWN0Ojpy
ZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgdW5z
aWduZWQgYXR0cmlidXRlczsKICAgICAgICAgICAgIGF1dG8ga2V5ID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmdm0sIHZhbHVlLm1fa2V5KTsKICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IGdldERpcmVjdE9mZnNldCh2bSwga2V5LCBhdHRyaWJ1dGVzKTsKLSAgICAgICAgICAg
IGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQotICAgICAgICAgICAgICAgIHJlaWZ5U3RhdGlj
UHJvcGVydHkodm0sIGhhc2hUYWJsZS0+Y2xhc3NGb3JUaGlzLCBrZXksIHZhbHVlLCAqdGhpcyk7
CisgICAgICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgeworICAgICAgICAgICAg
ICAgIHJlaWZ5U3RhdGljUHJvcGVydHkodm0sIGV4ZWMsIGhhc2hUYWJsZS0+Y2xhc3NGb3JUaGlz
LCBrZXksIHZhbHVlLCAqdGhpcyk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggNTkwYmExZDkyOTkzNDlm
YmUwMzI5NjQ4MDk0MGI4NDM0Y2UxZmQxMS4uYjA4YTdlNDc1MmIzNjc3OWUxYjZkOGI5N2I5ZWYz
YmNhOWQwNzA1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBA
IC05NCw3ICs5NCw3IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgZnJp
ZW5kIGNsYXNzIEpTQ2VsbDsKICAgICBmcmllbmQgY2xhc3MgSlNGaW5hbE9iamVjdDsKICAgICBm
cmllbmQgY2xhc3MgTWFya2VkQmxvY2s7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgZnJpZW5kIGJv
b2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoVk0mLCBjb25zdCBIYXNoVGFibGVWYWx1ZSosIEpT
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBmcmllbmQgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqLCBjb25z
dCBIYXNoVGFibGVWYWx1ZSosIEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKIAogICAgIGVudW0gUHV0TW9kZSB7CiAgICAgICAgIFB1dE1vZGVQdXQsCkBAIC0xMDI3LDEx
ICsxMDI3LDExIEBAIHByaXZhdGU6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgTkVWRVJfSU5MSU5F
IGJvb2wgcHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwogCiAgICAgYm9vbCBnZXROb25JbmRleFByb3BlcnR5U2xvdChFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIGJvb2wgZ2V0T3duTm9u
SW5kZXhQcm9wZXJ0eVNsb3QoVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOworICAgIGJvb2wgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwg
U3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90JiwgSlNDZWxs
KiwgdW5zaWduZWQsIFByb3BlcnR5T2Zmc2V0KTsKICAgICB2b2lkIGZpbGxDdXN0b21HZXR0ZXJQ
cm9wZXJ0eVNsb3QoVk0mLCBQcm9wZXJ0eVNsb3QmLCBDdXN0b21HZXR0ZXJTZXR0ZXIqLCB1bnNp
Z25lZCwgU3RydWN0dXJlKik7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGdldE93blN0
YXRpY1Byb3BlcnR5U2xvdChWTSYsIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRPd25TdGF0aWNQcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdHJ1Y3QgUHJvcGVydHlIYXNo
RW50cnkgewogICAgICAgICBjb25zdCBIYXNoVGFibGUqIHRhYmxlOwogICAgICAgICBjb25zdCBI
YXNoVGFibGVWYWx1ZSogdmFsdWU7CkBAIC0xMzQzLDE0ICsxMzQzLDE1IEBAIGlubGluZSBKU1Zh
bHVlIEpTT2JqZWN0OjpnZXRQcm90b3R5cGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAKIC8v
IEl0IGlzIHNhZmUgdG8gY2FsbCB0aGlzIG1ldGhvZCB3aXRoIGEgUHJvcGVydHlOYW1lIHRoYXQg
aXMgYWN0dWFsbHkgYW4gaW5kZXgsCiAvLyBidXQgaWYgc28gd2lsbCBhbHdheXMgcmV0dXJuIGZh
bHNlIChkb2Vzbid0IHNlYXJjaCBpbmRleCBzdG9yYWdlKS4KLUFMV0FZU19JTkxJTkUgYm9vbCBK
U09iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQor
QUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdChF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
ICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0
cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwogICAgIGlmICghaXNW
YWxpZE9mZnNldChvZmZzZXQpKSB7CiAgICAgICAgIGlmICghVHlwZUluZm86Omhhc1N0YXRpY1By
b3BlcnR5VGFibGUoaW5saW5lVHlwZUZsYWdzKCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICByZXR1cm4gZ2V0T3duU3RhdGljUHJvcGVydHlTbG90KHZtLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOworICAgICAgICByZXR1cm4gZ2V0T3duU3RhdGljUHJvcGVydHlTbG90KGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIAogICAgIC8vIGdldFByb3BlcnR5U2xv
dCByZWxpZXMgb24gdGhpcyBtZXRob2QgbmV2ZXIgcmV0dXJuaW5nIGluZGV4IHByb3BlcnRpZXMh
CkBAIC0xNDAwLDE5ICsxNDAxLDIyIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU09iamVjdDo6Zmls
bEN1c3RvbUdldHRlclByb3BlcnR5U2xvdChWTSYgdm0sIFByb3BlcnR5U2xvdCYKIEFMV0FZU19J
TkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gb2JqZWN0
LT5zdHJ1Y3R1cmUodm0pOwotICAgIGlmIChvYmplY3QtPmdldE93bk5vbkluZGV4UHJvcGVydHlT
bG90KHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgaWYgKG9iamVjdC0+
Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QoZXhlYywgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBmYWxzZSk7CiAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFy
c2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gZ2V0T3duUHJvcGVydHlTbG90
QnlJbmRleChvYmplY3QsIGV4ZWMsIGluZGV4LnZhbHVlKCksIHNsb3QpOwogICAgIHJldHVybiBm
YWxzZTsKIH0KIAogLy8gSXQgbWF5IHNlZW0gY3JhenkgdG8gaW5saW5lIGEgZnVuY3Rpb24gdGhp
cyBsYXJnZSBidXQgaXQgbWFrZXMgYSBiaWcgZGlmZmVyZW5jZQotLy8gc2luY2UgdGhpcyBpcyBm
dW5jdGlvbiB2ZXJ5IGhvdCBpbiB2YXJpYWJsZSBsb29rdXAKKy8vIHNpbmNlIHRoaXMgZnVuY3Rp
b24gaXMgdmVyeSBob3QgaW4gdmFyaWFibGUgbG9va3VwCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNP
YmplY3Q6OmdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBz
dHJ1Y3R1cmVJRFRhYmxlID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCk7CiAgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IHRoaXM7CiAgICAgd2hpbGUgKHRydWUpIHsKQEAgLTE0MjksOCArMTQzMyw5
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlCiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKG9i
amVjdC0+dHlwZSgpICE9IFByb3h5T2JqZWN0VHlwZSk7CiAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gc3RydWN0dXJlSURUYWJsZS5nZXQob2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKLSAg
ICAgICAgaWYgKG9iamVjdC0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3Qodm0sIHN0cnVjdHVy
ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICAgICAgaWYgKG9iamVjdC0+Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eVNsb3QoZXhlYywgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBsb29rIGxpa2UgaXQncyBm
b2xsb3dpbmcgdGhlIHNwZWNpZmljYXRpb246CiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI1NzIKICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUg
PSBzdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZShvYmplY3QpOwpAQCAtMTYzMSw3ICsxNjM2LDcg
QEAgSlNfRVhQT1JUX1BSSVZBVEUgTkVWRVJfSU5MSU5FIGJvb2wgb3JkaW5hcnlTZXRTbG93KEV4
ZWNTdGF0ZSosIEpTT2JqZWN0KiwgUHJvcGUKIAogI2RlZmluZSBKU0NfQlVJTFRJTl9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04oanNOYW1lLCBnZW5lcmF0b3JOYW1lLCBhdHRyaWJ1dGVzKSBc
CiAgICAgcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oXAotICAgICAg
ICB2bSwgZ2xvYmFsT2JqZWN0LCBtYWtlSWRlbnRpZmllcih2bSwgKGpzTmFtZSkpLCAoZ2VuZXJh
dG9yTmFtZSkodm0pLCAoYXR0cmlidXRlcykpCisgICAgICAgIHZtLCBnbG9iYWxPYmplY3QsIG1h
a2VJZGVudGlmaWVyKHZtLCAoanNOYW1lKSksIChnZW5lcmF0b3JOYW1lKSh2bSkudmFsdWUoKSwg
KGF0dHJpYnV0ZXMpKQogCiAvLyBIZWxwZXIgZm9yIGRlZmluaW5nIG5hdGl2ZSBnZXR0ZXJzIG9u
IHByb3BlcnRpZXMuCiAjZGVmaW5lIEpTQ19OQVRJVkVfSU5UUklOU0lDX0dFVFRFUihqc05hbWUs
IGNwcE5hbWUsIGF0dHJpYnV0ZXMsIGludHJpbnNpYykgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggODkyZTJjYTQ1Zjk3ZGQ2ZjMy
YTZhMGU2OGExOTJlMjZlZTUzMTgwYi4uYjRiNTcwZWJjYjQyODE5YjczZDY5ZWVlYjBlOGVjMjFl
YTg0OGExZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJ
bmxpbmVzLmgKQEAgLTE0MCw4ICsxNDAsOSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6
OmdldE5vbkluZGV4UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogICAg
IHdoaWxlICh0cnVlKSB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3RydWN0dXJl
SURUYWJsZS5nZXQob2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAgaWYgKExJS0VMWSgh
VHlwZUluZm86Om92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdChvYmplY3QtPmlubGluZVR5cGVG
bGFncygpKSkpIHsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmdldE93bk5vbkluZGV4UHJvcGVy
dHlTbG90KHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgICAgICAgICBp
ZiAob2JqZWN0LT5nZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdChleGVjLCBzdHJ1Y3R1cmUsIHBy
b3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBib29sIGhhc1Nsb3QgPSBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5tZXRo
b2RUYWJsZS5nZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1By
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlLmNwcAppbmRleCA3NWIwYzExZjM2ZTI2YTdiYTQ5MzQxNTg1NTI2MzhiODFl
MTVmMWUyLi44N2ZkYTNhZjhkOTMwMzdlYWNkMmRhMjY4N2VhMjUwNDA3OTY2ZGVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlLmNwcApAQCAtMzMwLDcgKzMzMCw3IEBAIHZvaWQgSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqCiAgICAgdG9TdHJpbmdUYWdBY2Nlc3Nvci0+c2V0R2V0dGVyKHZtLCBnbG9iYWxPYmplY3Qs
IHRvU3RyaW5nVGFnRnVuY3Rpb24pOwogICAgIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3Iodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCB0b1N0cmluZ1RhZ0FjY2Vzc29y
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwogCi0gICAgSlNGdW5jdGlvbiogdmFs
dWVzRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHR5cGVkQXJyYXlQcm90b3R5cGVW
YWx1ZXNDb2RlR2VuZXJhdG9yKHZtKSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBKU0Z1bmN0aW9uKiB2
YWx1ZXNGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdHlwZWRBcnJheVByb3RvdHlw
ZVZhbHVlc0NvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIGdsb2JhbE9iamVjdCk7CiAKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkudmFsdWVzUHVibGljTmFtZSgpLCB2YWx1ZXNGdW5jdGlvbiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgdmFsdWVz
RnVuY3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCmluZGV4IDk2NmM3
MWViMTBhOGE4NDg0N2U4N2NiNjEyM2U0MDg3NTE3OGJmMDYuLjhlYWMwZjk0YzU3NjE0ODFhMDdm
MzBiMmIyYTU1YzZjNDg5NTcyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xvb2t1cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9v
a3VwLmNwcApAQCAtMzMsNyArMzMsNyBAQCB2b2lkIHJlaWZ5U3RhdGljQWNjZXNzb3IoVk0mIHZt
LCBjb25zdCBIYXNoVGFibGVWYWx1ZSYgdmFsdWUsIEpTT2JqZWN0JiB0aGlzT2JqZQogICAgIGlm
ICh2YWx1ZS5hY2Nlc3NvckdldHRlcigpKSB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9u
ID0gbnVsbHB0cjsKICAgICAgICAgaWYgKHZhbHVlLmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0
cmlidXRlOjpCdWlsdGluKQotICAgICAgICAgICAgZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHZhbHVlLmJ1aWx0aW5BY2Nlc3NvckdldHRlckdlbmVyYXRvcigpKHZtKSwgZ2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgICAgIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB2
YWx1ZS5idWlsdGluQWNjZXNzb3JHZXR0ZXJHZW5lcmF0b3IoKSh2bSkudmFsdWUoKSwgZ2xvYmFs
T2JqZWN0KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBTdHJpbmcgZ2V0dGVyTmFtZSA9
IHRyeU1ha2VTdHJpbmcoQVNDSUlMaXRlcmFsKCJnZXQgIiksIFN0cmluZygqcHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSkpOwogICAgICAgICAgICAgaWYgKCFnZXR0ZXJOYW1lKQpAQCAtNDUsOCAr
NDUsMTAgQEAgdm9pZCByZWlmeVN0YXRpY0FjY2Vzc29yKFZNJiB2bSwgY29uc3QgSGFzaFRhYmxl
VmFsdWUmIHZhbHVlLCBKU09iamVjdCYgdGhpc09iamUKICAgICB0aGlzT2JqZWN0LnB1dERpcmVj
dE5vbkluZGV4QWNjZXNzb3Iodm0sIHByb3BlcnR5TmFtZSwgYWNjZXNzb3IsIGF0dHJpYnV0ZXNG
b3JTdHJ1Y3R1cmUodmFsdWUuYXR0cmlidXRlcygpKSk7CiB9CiAKLWJvb2wgc2V0VXBTdGF0aWNG
dW5jdGlvblNsb3QoVk0mIHZtLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgSGFz
aFRhYmxlVmFsdWUqIGVudHJ5LCBKU09iamVjdCogdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9u
U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBjb25zdCBI
YXNoVGFibGVWYWx1ZSogZW50cnksIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgQVNT
RVJUKHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpKTsKICAgICBBU1NFUlQoZW50cnktPmF0dHJp
YnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpCdWlsdGluT3JGdW5jdGlvbk9yQWNjZXNzb3JP
ckxhenlQcm9wZXJ0eSk7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKQEAgLTU5LDcgKzYxLDgg
QEAgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChWTSYgdm0sIGNvbnN0IENsYXNzSW5mbyog
Y2xhc3NJbmZvLCBjb25zdCBIYXNoVGFibGUKICAgICAgICAgaWYgKHRoaXNPYmplY3QtPnN0YXRp
Y1Byb3BlcnRpZXNSZWlmaWVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAg
ICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgY2xhc3NJbmZvLCBwcm9wZXJ0eU5hbWUsICplbnRy
eSwgKnRoaXNPYmplY3QpOworICAgICAgICByZWlmeVN0YXRpY1Byb3BlcnR5KHZtLCBleGVjLCBj
bGFzc0luZm8sIHByb3BlcnR5TmFtZSwgKmVudHJ5LCAqdGhpc09iamVjdCk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAogICAgICAgICBvZmZzZXQgPSB0aGlz
T2JqZWN0LT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiAg
ICAgICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xvb2t1cC5oCmluZGV4IGJmZWU1MWUwYjFhY2I0NDZhMzUwODJiNDViZjAxZTkzOGE2
ODhhZjcuLjY2ZTdhMTFmN2MyNjVlZTIyYjhiMzg4ODVmNTdkNjEyYmQ2NDcwZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCkBAIC0zMSwxMCArMzEsMTIgQEAKICNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRl
ICJMYXp5UHJvcGVydHkuaCIKKyNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgogI2luY2x1ZGUgIlBy
b3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIlB1dFByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIlR5
cGVFcnJvci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0V4
cGVjdGVkLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00Nyw3ICs0OSw3IEBAIHN0cnVjdCBD
b21wYWN0SGFzaEluZGV4IHsKIC8vIGllLiB0eXBlZGVmIEpTVmFsdWUgKCpHZXRGdW5jdGlvbiko
RXhlY1N0YXRlKiwgSlNPYmplY3QqIGJhc2VPYmplY3QpCiB0eXBlZGVmIFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jIEdldEZ1bmN0aW9uOwogdHlwZWRlZiBQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYyBQdXRGdW5jdGlvbjsKLXR5cGVkZWYgRnVuY3Rpb25FeGVjdXRhYmxlKiAoKkJ1aWx0
aW5HZW5lcmF0b3IpKFZNJik7Cit0eXBlZGVmIEV4cGVjdGVkPEZ1bmN0aW9uRXhlY3V0YWJsZSos
IFBhcnNlckVycm9yPiAoKkJ1aWx0aW5HZW5lcmF0b3IpKFZNJik7CiB0eXBlZGVmIEpTVmFsdWUg
KCpMYXp5UHJvcGVydHlDYWxsYmFjaykoVk0mLCBKU09iamVjdCopOwogCiAvLyBIYXNoIHRhYmxl
IGdlbmVyYXRlZCBieSB0aGUgY3JlYXRlX2hhc2hfdGFibGUgc2NyaXB0LgpAQCAtMjAzLDcgKzIw
NSw3IEBAIHN0cnVjdCBIYXNoVGFibGUgewogICAgIH0KIH07CiAKLUpTX0VYUE9SVF9QUklWQVRF
IGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoVk0mLCBjb25zdCBDbGFzc0luZm8qLCBjb25z
dCBIYXNoVGFibGVWYWx1ZSosIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOworSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9u
U2xvdChFeGVjU3RhdGUqLCBjb25zdCBDbGFzc0luZm8qLCBjb25zdCBIYXNoVGFibGVWYWx1ZSos
IEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCByZWlmeVN0YXRpY0FjY2Vzc29yKFZNJiwgY29uc3QgSGFzaFRh
YmxlVmFsdWUmLCBKU09iamVjdCYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1lKTsKIAogaW5saW5l
IEJ1aWx0aW5HZW5lcmF0b3IgSGFzaFRhYmxlVmFsdWU6OmJ1aWx0aW5BY2Nlc3NvckdldHRlckdl
bmVyYXRvcigpIGNvbnN0CkBAIC0yMjAsNyArMjIyLDcgQEAgaW5saW5lIEJ1aWx0aW5HZW5lcmF0
b3IgSGFzaFRhYmxlVmFsdWU6OmJ1aWx0aW5BY2Nlc3NvclNldHRlckdlbmVyYXRvcigpIGNvbnN0
CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QnVpbHRpbkdlbmVyYXRvcj4obV92YWx1ZXMu
dmFsdWUyKTsKIH0KIAotaW5saW5lIGJvb2wgZ2V0U3RhdGljUHJvcGVydHlTbG90RnJvbVRhYmxl
KFZNJiB2bSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGNvbnN0IEhhc2hUYWJsZSYgdGFi
bGUsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBnZXRTdGF0aWNQcm9wZXJ0eVNsb3RGcm9tVGFi
bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgSGFz
aFRhYmxlJiB0YWJsZSwgSlNPYmplY3QqIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAodGhpc09iamVjdC0+c3RhdGlj
UHJvcGVydGllc1JlaWZpZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjMwLDcgKzIz
Miw3IEBAIGlubGluZSBib29sIGdldFN0YXRpY1Byb3BlcnR5U2xvdEZyb21UYWJsZShWTSYgdm0s
IGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBjCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkJ1aWx0aW5P
ckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5KQotICAgICAgICByZXR1cm4gc2V0VXBT
dGF0aWNGdW5jdGlvblNsb3Qodm0sIGNsYXNzSW5mbywgZW50cnksIHRoaXNPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CisgICAgICAgIHJldHVybiBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChl
eGVjLCBjbGFzc0luZm8sIGVudHJ5LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
CiAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3Rh
bnRJbnRlZ2VyKSB7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgYXR0cmlidXRl
c0ZvclN0cnVjdHVyZShlbnRyeS0+YXR0cmlidXRlcygpKSwganNOdW1iZXIoZW50cnktPmNvbnN0
YW50SW50ZWdlcigpKSk7CkBAIC0zMTksMTMgKzMyMSwyNCBAQCBpbmxpbmUgYm9vbCBsb29rdXBQ
dXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU09iamVjdCog
YmFzZQogICAgIHJldHVybiB0cnVlOwogfQogCi1pbmxpbmUgdm9pZCByZWlmeVN0YXRpY1Byb3Bl
cnR5KFZNJiB2bSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGNvbnN0IFByb3BlcnR5TmFt
ZSYgcHJvcGVydHlOYW1lLCBjb25zdCBIYXNoVGFibGVWYWx1ZSYgdmFsdWUsIEpTT2JqZWN0JiB0
aGlzT2JqKQoraW5saW5lIHZvaWQgcmVpZnlTdGF0aWNQcm9wZXJ0eShWTSYgdm0sIEV4ZWNTdGF0
ZSogZXhlY0lmQXZhaWxhYmxlLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgUHJv
cGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IEhhc2hUYWJsZVZhbHVlJiB2YWx1ZSwgSlNP
YmplY3QmIHRoaXNPYmopCiB7CisgICAgQVNTRVJUKGV4ZWNJZkF2YWlsYWJsZSA9PSBudWxscHRy
IHx8ICZ2bSA9PSAmKGV4ZWNJZkF2YWlsYWJsZS0+dm0oKSkpOworCiAgICAgaWYgKHZhbHVlLmF0
dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpCdWlsdGluKSB7CiAgICAgICAgIGlmICh2
YWx1ZS5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpCiAgICAgICAg
ICAgICByZWlmeVN0YXRpY0FjY2Vzc29yKHZtLCB2YWx1ZSwgdGhpc09iaiwgcHJvcGVydHlOYW1l
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpc09iai5wdXREaXJlY3RCdWlsdGluRnVu
Y3Rpb24odm0sIHRoaXNPYmouZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgdmFsdWUuYnVp
bHRpbkdlbmVyYXRvcigpKHZtKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1
dGVzKCkpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBFeHBlY3RlZDxGdW5jdGlvbkV4
ZWN1dGFibGUqLCBQYXJzZXJFcnJvcj4gZiA9IHZhbHVlLmJ1aWx0aW5HZW5lcmF0b3IoKSh2bSk7
CisgICAgICAgICAgICBpZiAoZi5oYXNfdmFsdWUoKSkKKyAgICAgICAgICAgICAgICB0aGlzT2Jq
LnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2bSwgdGhpc09iai5nbG9iYWxPYmplY3QoKSwgcHJv
cGVydHlOYW1lLCBmLnZhbHVlKCksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUodmFsdWUuYXR0cmli
dXRlcygpKSk7CisgICAgICAgICAgICBlbHNlIGlmIChleGVjSWZBdmFpbGFibGUpCisgICAgICAg
ICAgICAgICAgZi5lcnJvcigpLnRocm93U3RhY2tPdmVyZmxvd09yT3V0T2ZNZW1vcnkoZXhlY0lm
QXZhaWxhYmxlKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGRhdGFMb2dM
bigiRmF0YWwgcGFyc2VyIGVycm9yIChwcm9iYWJseSBhIHN0YWNrIG92ZXJmbG93KSwgYW5kIG5v
IEV4ZWNTdGF0ZSBhdmFpbGFibGUgZm9yIHRocm93aW5nIGEgSlMgZXhjZXB0aW9uIik7CisgICAg
ICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC00MDAsNyArNDEzLDcgQEAgaW5saW5lIHZvaWQgcmVpZnlTdGF0
aWNQcm9wZXJ0aWVzKFZNJiB2bSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGNvbnN0IEhh
c2gKICAgICAgICAgaWYgKCF2YWx1ZS5tX2tleSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBhdXRvIGtleSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4odmFsdWUubV9rZXkpLCBzdHJsZW4odmFsdWUubV9rZXkpKTsKLSAg
ICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgY2xhc3NJbmZvLCBrZXksIHZhbHVlLCB0aGlz
T2JqKTsKKyAgICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgbnVsbHB0ciwgY2xhc3NJbmZv
LCBrZXksIHZhbHVlLCB0aGlzT2JqKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCmluZGV4IDUzNTY4YjdhM2FhZTRiMTI2Y2Nl
MzM5ZDMyZDA0NzBlZWE3NmExODMuLmZlMmI2YmVlMTMyMGNiMjU1N2E3ZGU1MzJmZmQ5ODA0ZGIz
MjVkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBl
LmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIE1hcFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJVkVfSU5U
UklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5nZXRQcml2YXRlTmFtZSgpLCBtYXBQcm90b0Z1bmNHZXQsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxLCBKU01hcEdldEludHJp
bnNpYyk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnNldFByaXZhdGVOYW1lKCksIG1h
cFByb3RvRnVuY1NldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIDIsIEpTTWFwU2V0SW50cmluc2ljKTsKIAotICAgIEpTRnVuY3Rpb24qIGVudHJp
ZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIG1hcFByb3RvdHlwZUVudHJpZXNDb2RlR2VuZXJh
dG9yKHZtKSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBKU0Z1bmN0aW9uKiBlbnRyaWVzID0gSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBtYXBQcm90b3R5cGVFbnRyaWVzQ29kZUdlbmVyYXRvcih2bSkudmFs
dWUoKSwgZ2xvYmFsT2JqZWN0KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSwgZW50
cmllcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkp
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5p
dGVyYXRvclN5bWJvbCwgZW50cmllcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNTdHJpbmcoJnZtLCAiTWFwIiks
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcApp
bmRleCAyOTM0Mzk2MDg3ZTY4YmYzOGM5MTg3MzE4MDRmNmY2ZTcwYjA3ZDZjLi5mMmYwNWUzZmYw
ZmU0YzNhYjlmMmNiNmJlMDUyOWE0NDBjMmZkODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBTZXRQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJ
T04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaGFzUHJpdmF0ZU5hbWUoKSwgc2V0
UHJvdG9GdW5jSGFzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgMSwgSlNTZXRIYXNJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lD
X0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5hZGRQcml2YXRlTmFtZSgpLCBzZXRQcm90b0Z1bmNBZGQsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxLCBKU1NldEFkZEludHJpbnNpYyk7
CiAKLSAgICBKU0Z1bmN0aW9uKiB2YWx1ZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHNldFBy
b3RvdHlwZVZhbHVlc0NvZGVHZW5lcmF0b3Iodm0pLCBnbG9iYWxPYmplY3QpOworICAgIEpTRnVu
Y3Rpb24qIHZhbHVlcyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgc2V0UHJvdG90eXBlVmFsdWVz
Q29kZUdlbmVyYXRvcih2bSkudmFsdWUoKSwgZ2xvYmFsT2JqZWN0KTsKICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudmFs
dWVzUHVibGljTmFtZSgpLCB2YWx1ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1YmxpY05hbWUoKSwgdmFsdWVz
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJh
dG9yU3ltYm9sLCB2YWx1ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9K
U0RvbGxhclZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNw
cAppbmRleCA3N2Y2MDM5NWNmNmE5NDI2YzE2NjBiZTBlYjgwMWVmNjZjYWM3NGJlLi4zNmRiZDRm
MjZjNDBkYmRjMTBkN2UzOTE0ZmViMDdiOTI0MzViMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiSlNEb2xsYXJWTS5oIgogCi0jaW5jbHVkZSAiQnVpbHRpbkV4ZWN1
dGFibGVDcmVhdG9yLmgiCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgiCiAj
aW5jbHVkZSAiRE9NSklUR2V0dGVyU2V0dGVyLmgiCkBAIC0xNTIyLDkgKzE1MjIsOCBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUJ1aWx0aW4oRXhl
Y1N0YXRlKiBleGVjKQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogCiAgICAgY29uc3QgU291cmNlQ29kZSYgc291cmNlID0gbWFrZVNvdXJjZShmdW5j
dGlvblRleHQsIHsgfSk7Ci0gICAgSlNGdW5jdGlvbiogZnVuYyA9IEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUodm0sIHNvdXJjZSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmdm0sICJmb28iKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBDb25zdHJ1Y3RBYmls
aXR5OjpDYW5ub3RDb25zdHJ1Y3QpLT5saW5rKHZtLCBzb3VyY2UpLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmdW5jKTsKKyAgICBh
dXRvIHVubGlua2VkID0gQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlT3JDcmFz
aCh2bSwgc291cmNlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImZvbyIpLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdCk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHVubGlua2VkLT5s
aW5rKHZtLCBzb3VyY2UpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVSb290KEV4ZWNT
dGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVh
ZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcAppbmRleCBjYTk3
ZTk2MTFkMDMyMmI2NTJkY2NlNGY2ZWY5OGU0OGEyZDczMzZkLi4xNGMyYmNkZTY5MjU3YmFjMjQx
NmRiZTdhM2MzYWQ2YmQzYmRiYjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMu
Y3BwCkBAIC0xMjQsMjcgKzEyNCwyNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU0J1
aWx0aW5SZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0UHJpdmF0ZUNvbnN0cnVjdG9yOgogCiB0ZW1w
bGF0ZTw+IEZ1bmN0aW9uRXhlY3V0YWJsZSogSlNCdWlsdGluUmVhZGFibGVTdHJlYW1EZWZhdWx0
UmVhZGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZShKU0M6OlZNJiB2
bSkKIHsKLSAgICByZXR1cm4gcmVhZGFibGVTdHJlYW1JbnRlcm5hbHNQcml2YXRlSW5pdGlhbGl6
ZVJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlckNvZGVHZW5lcmF0b3Iodm0pOworICAgIHJldHVy
biByZWFkYWJsZVN0cmVhbUludGVybmFsc1ByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1E
ZWZhdWx0UmVhZGVyQ29kZUdlbmVyYXRvcih2bSkudmFsdWUoKTsKIH0KIAogdGVtcGxhdGU8PiBG
dW5jdGlvbkV4ZWN1dGFibGUqIEpTQnVpbHRpblJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xs
ZXJQcml2YXRlQ29uc3RydWN0b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKEpTQzo6Vk0mIHZtKQog
ewotICAgIHJldHVybiByZWFkYWJsZVN0cmVhbUludGVybmFsc1ByaXZhdGVJbml0aWFsaXplUmVh
ZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckNvZGVHZW5lcmF0b3Iodm0pOworICAgIHJldHVy
biByZWFkYWJsZVN0cmVhbUludGVybmFsc1ByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1E
ZWZhdWx0Q29udHJvbGxlckNvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCk7CiB9CiAKIHRlbXBsYXRl
PD4gRnVuY3Rpb25FeGVjdXRhYmxlKiBKU0J1aWx0aW5SZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9s
bGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZShKU0M6OlZNJiB2bSkK
IHsKLSAgICByZXR1cm4gcmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzUHJpdmF0ZUluaXRpYWxp
emVSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyQ29kZUdlbmVyYXRvcih2bSk7CisgICAgcmV0
dXJuIHJlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFsc1ByaXZhdGVJbml0aWFsaXplUmVhZGFibGVC
eXRlU3RyZWFtQ29udHJvbGxlckNvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCk7CiB9CiAKIHRlbXBs
YXRlPD4gRnVuY3Rpb25FeGVjdXRhYmxlKiBKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbUJZT0JSZWFk
ZXJQcml2YXRlQ29uc3RydWN0b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKEpTQzo6Vk0mIHZtKQog
ewotICAgIHJldHVybiByZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNQcml2YXRlSW5pdGlhbGl6
ZVJlYWRhYmxlU3RyZWFtQllPQlJlYWRlckNvZGVHZW5lcmF0b3Iodm0pOworICAgIHJldHVybiBy
ZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNQcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFt
QllPQlJlYWRlckNvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCk7CiB9CiAKIHRlbXBsYXRlPD4gRnVu
Y3Rpb25FeGVjdXRhYmxlKiBKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0UHJpdmF0
ZUNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZShKU0M6OlZNJiB2bSkKIHsKLSAgICBy
ZXR1cm4gcmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzUHJpdmF0ZUluaXRpYWxpemVSZWFkYWJs
ZVN0cmVhbUJZT0JSZXF1ZXN0Q29kZUdlbmVyYXRvcih2bSk7CisgICAgcmV0dXJuIHJlYWRhYmxl
Qnl0ZVN0cmVhbUludGVybmFsc1ByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1CWU9CUmVx
dWVzdENvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVSZWFk
YWJsZVN0cmVhbURlZmF1bHRSZWFkZXJQcml2YXRlQ29uc3RydWN0b3IoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBjNGY1MTI4ZDEwOGZjNzRiOGZiNDUx
ZWJjY2UzZTg4M2VhZDJmN2QxLi42M2IwNTkzY2IzODNhZWE2NTM5NGNlOWE4YTNlMmNlZGFkZjYx
MGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQpAQCAtNzE3Myw3ICs3MTczLDcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JI
ZWxwZXJNZXRob2RzCiAgICAgaWYgKElzSlNCdWlsdGluQ29uc3RydWN0b3IoJGludGVyZmFjZSkp
IHsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAidGVtcGxhdGU8PiBGdW5jdGlvbkV4ZWN1
dGFibGUqICR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojppbml0aWFsaXplRXhlY3V0YWJsZShWTSYg
dm0pXG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7Ci0gICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gIiAuIEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFt
ZUZyb21TdHJpbmcoJGludGVyZmFjZS0+dHlwZS0+bmFtZSwgImluaXRpYWxpemUiIC4gJGludGVy
ZmFjZS0+dHlwZS0+bmFtZSkgLiAiKHZtKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgcmV0dXJuICIgLiBHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWVGcm9tU3RyaW5nKCRp
bnRlcmZhY2UtPnR5cGUtPm5hbWUsICJpbml0aWFsaXplIiAuICRpbnRlcmZhY2UtPnR5cGUtPm5h
bWUpIC4gIih2bSkudmFsdWUoKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9
XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiXG4iKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAppbmRl
eCAxYWM2ZWFiNjQ5ZWYyMjA3NzY0YjJjMjRkODc1OWMyZTNmMmI0MzhmLi5lMGIxNjA4YmQwNTQ2
MjYyMWJlYjU0MDY1YWM2NDA1ZjdjZGI5ZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdGVt
cGxhdGU8PiB2b2lkIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0
b3I6OmluaXRpYWxpemVQcm9wZXIKIAogdGVtcGxhdGU8PiBGdW5jdGlvbkV4ZWN1dGFibGUqIEpT
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluaXRpYWxpemVF
eGVjdXRhYmxlKFZNJiB2bSkKIHsKLSAgICByZXR1cm4gdGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9ySW5pdGlhbGl6ZVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvZGVH
ZW5lcmF0b3Iodm0pOworICAgIHJldHVybiB0ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JJbml0aWFsaXplVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29kZUdlbmVyYXRv
cih2bSkudmFsdWUoKTsKIH0KIAogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3RvckNvbnN0cnVjdG9yKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ci5jcHAKaW5kZXggZTJhZTViZDhhNDNjYzFkYzk1NzRiYjYzZmE0ZjM2NWZmYTM2MTY1Mi4uODI1
M2JhYmYyMTU4YjJjMjhmNzliZGFlMGY2MDBiOGUzZGJjOWIwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHRlbXBsYXRlPD4g
dm9pZCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJv
cGVydGllcyhWTSYKIAogdGVtcGxhdGU8PiBGdW5jdGlvbkV4ZWN1dGFibGUqIEpTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKFZNJiB2bSkK
IHsKLSAgICByZXR1cm4gdGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9ySW5pdGlhbGl6ZVRlc3RKU0J1
aWx0aW5Db25zdHJ1Y3RvckNvZGVHZW5lcmF0b3Iodm0pOworICAgIHJldHVybiB0ZXN0SlNCdWls
dGluQ29uc3RydWN0b3JJbml0aWFsaXplVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29kZUdlbmVy
YXRvcih2bSkudmFsdWUoKTsKIH0KIAogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9OwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAyMzE3
NzIxMWQ4ZTZiOGQyMzBhNTRkYmVkNzM4MGZmODE5YTZmMjkxLi5hZmQ2ZDdlYjQ2YTk4MjVlMjBm
Zjg0MTQzN2I5ODZiYThjMmM5MTFhIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTAzLTI5ICBSb2JpbiBN
b3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQSBzdGFjayBvdmVyZmxv
dyBpbiB0aGUgcGFyc2luZyBvZiBhIGJ1aWx0aW4gKGNhbGxlZCBieSBjcmVhdGVFeGVjdXRhYmxl
KSBjYXVzZSBhIGNyYXNoIGluc3RlYWQgb2YgYSBjYXRjaGFibGUganMgZXhjZXB0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQwNzQKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM3MTY1ODk3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL3N0YWNrLW92ZXJmbG93LXdoaWxlLXBhcnNp
bmctYnVpbHRpbi5qczogQWRkZWQuCisgICAgICAgIChmKToKKwogMjAxOC0wMy0yOCAgUm9iaW4g
TW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIGFwcGVuZFF1b3RlZEpT
T05TdHJpbmcgc3RvcHMgb24gYXJpdGhtZXRpYyBvdmVyZmxvdyBpbnN0ZWFkIG9mIHByb3BhZ2F0
aW5nIGl0IHVwd2FyZHMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3N0YWNrLW92ZXJmbG93
LXdoaWxlLXBhcnNpbmctYnVpbHRpbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3N0YWNrLW92ZXJmbG93
LXdoaWxlLXBhcnNpbmctYnVpbHRpbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjk5YTE3MmY0M2ViN2U2MjY3
ZDUxY2M2ZGU5MWI2NWE4Y2Y2ZDYxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
c3RhY2stb3ZlcmZsb3ctd2hpbGUtcGFyc2luZy1idWlsdGluLmpzCkBAIC0wLDAgKzEsMTEgQEAK
K2Z1bmN0aW9uIGYoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgZigpOworICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIE1hcC5wcm90b3R5cGUuZm9yRWFjaC5jYWxs
KCcnLCB7fSk7CisgICAgICAgIH0gY2F0Y2gge30KKyAgICB9Cit9CisKK2YoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336849</attachid>
            <date>2018-03-30 05:02:49 -0700</date>
            <delta_ts>2018-04-20 04:08:02 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-184074-20180330140247.patch</filename>
            <type>text/plain</type>
            <size>78746</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NWIyNDg5MjNhMTJkMDI3YmM3YmFkMTRjNWMzZDY2MWYzNGJhNDMyLi4zZDUwMDA1OGQwNTM5Nzgz
MDkzMGNmMGViZDg2MTdjN2NjMTc3YTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NCBAQAorMjAxOC0wMy0zMCAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUu
Y29tPgorCisgICAgICAgIEEgc3RhY2sgb3ZlcmZsb3cgaW4gdGhlIHBhcnNpbmcgb2YgYSBidWls
dGluIChjYWxsZWQgYnkgY3JlYXRlRXhlY3V0YWJsZSkgY2F1c2UgYSBjcmFzaCBpbnN0ZWFkIG9m
IGEgY2F0Y2hhYmxlIGpzIGV4Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MDc0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNzE2NTg5
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZWl0aCBNaWxsZXIuCisKKyAgICAgICAgRml4aW5n
IHRoaXMgcmVxdWlyZXMgZ2V0dGluZyB0aGUgUGFyc2VyRXJyb3IgKHdpdGggaW5mb3JtYXRpb24g
YWJvdXQgdGhlIGZhaWx1cmUpIGFuZCBhbiBFeGVjU3RhdGUqICh0byB0aHJvdyBhbiBleGNlcHRp
b24pIGluIHRoZSBzYW1lIHBsYWNlLgorICAgICAgICBJdCBpcyBzdXJwcmlzaW5nbHkgcGFpbmZ1
bCwgd2l0aCBxdWl0ZSBhIGxvbmcgY2FsbCBzdGFjayBiZXR3ZWVuIHRoZSBsYXN0IGZ1bmN0aW9u
IHdpdGggYW4gYWNjZXNzIHRvIGFuIEV4ZWNTdGF0ZSogYW5kIHRoZSBmaXJzdCBmdW5jdGlvbiB3
aXRoIHRoZSBQYXJzZXJFcnJvci4KKyAgICAgICAgRXZlbiB3b3JzZSwgbWFueSBvZiB0aGVzZSBm
dW5jdGlvbnMgYXJlIGdlbmVyYXRlZCBieSBtYWNyb3MsIHRoZW1zZWx2ZXMgZ2VuZXJhdGVkIGJ5
IGEgbWF6ZSBvZiBweXRob24gc2NyaXB0cy4KKyAgICAgICAgQXMgYSByZXN1bHQsIHRoaXMgcGF0
Y2ggaXMgZ3JvdGVzcXVlbHkgbGFyZ2UsIHdoaWxlIGFsbCBpdCBkb2VzIGlzIGFkZGluZyBlbm91
Z2ggcGx1bWJpbmcgdG8gdGhyb3cgYSBwcm9wZXIgZXhjZXB0aW9uIGluIHRoaXMgc3BlY2lmaWMg
Y2FzZS4KKworICAgICAgICBUaGVyZSBhcmUgbm93IGJhcmUgY2FsbHMgdG8gJy52YWx1ZSgpJyBv
biBzZXZlcmFsIHBhdGhzIHRoYXQgbWF5IGNyYXNoLiBJdCBpcyBub3QgYSBwcm9ibGVtIGluIG15
IG9waW5pb24sIHNpbmNlIHdlIHByZXZpb3VzbHkgY3Jhc2hlZCBpbiBldmVyeSBjYXNlIHJlZ2Fy
ZGxlc3Mgb2YgdGhlIHBhdGggdGhhdCB0b29rIHVzIHRvIGNyZWF0ZUV4ZWN1dGFibGUgd2hlbiBl
bmNvdW50ZXJpbmcgYSBzdGFjayBvdmVyZmxvdy4KKyAgICAgICAgSWYgd2UgZXZlciBmaW5kIGFu
IGV4YW1wbGUgdGhhdCBjYW4gY2F1c2UgdGhlc2UgY2FsbHMgdG8gZmFpbCwgaXQgc2hvdWxkIGJl
IGRvYWJsZSB0byB0aHJvdyBhIHByb3BlciBleGNlcHRpb24gdGhlcmUgdG9vLgorCisgICAgICAg
IFR3byBvdGhlciBtaW5vciBjaGFuZ2VzOgorICAgICAgICAtIEkgcmVtb3ZlZCBCdWlsdGluRXhl
Y3V0YWJsZUNyZWF0b3Iue2NwcCwgaH0gYXMgaXQgd2FzIG5lYXJseSBlbXB0eSwgYW5kIG9ubHkg
dXNlZCBpbiBvbmUgcGxhY2UuIFRoYXQgcGxhY2Ugbm93IGluY2x1ZGVzIEJ1aWx0aW5FeGVjdXRh
Ymxlcy5oIGRpcmVjdGx5IGluc3RlYWQuCisgICAgICAgIC0gSSBtb3ZlZCBjb2RlIGZyb20gUGFy
c2VyRXJyb3IuaCBpbnRvIGEgbmV3bHkgY3JlYXRlZCBQYXJzZXJFcnJvci5jcHAsIGFzIEkgc2Vl
IG5vIG5lZWQgdG8gaW5saW5lIGZ1bmN0aW9ucyB0aGF0IGFyZSBvbmx5IHVzZWQgd2hlbiBlbmNv
dW50ZXJpbmcgYSBwYXJzZXIgZXJyb3IsIGFuZCBQYXJzZXJFcnJvci5oIGlzIG5vdyBpbmNsdWRl
ZCBpbiBxdWl0ZSBhIGZldyBwbGFjZXMuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvYnVpbHRp
bnNfZ2VuZXJhdGVfY29tYmluZWRfaGVhZGVyLnB5OgorICAgICAgICAoQnVpbHRpbnNDb21iaW5l
ZEhlYWRlckdlbmVyYXRvci5nZW5lcmF0ZV9mb3J3YXJkX2RlY2xhcmF0aW9ucyk6CisgICAgICAg
IChQYXJzZXJFcnJvcik6CisgICAgICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3QpOiBE
ZWxldGVkLgorICAgICAgICAoZ2VuZXJhdGVfZXh0ZXJuc19mb3Jfb2JqZWN0KTogRGVsZXRlZC4K
KyAgICAgICAgKGdlbmVyYXRlX21hY3Jvc19mb3Jfb2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAg
KGdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfdGFibGVfbWFjcm8pOiBEZWxldGVkLgorICAgICAg
ICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV9uYW1lX21hY3JvKTogRGVsZXRlZC4KKyAgICAg
ICAgKGdlbmVyYXRlX3NlY3Rpb25fZm9yX2dsb2JhbF9wcml2YXRlX2NvZGVfbmFtZV9tYWNybyk6
IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9z
ZXBhcmF0ZV9oZWFkZXIucHk6CisgICAgICAgIChnZW5lcmF0ZV9zZWNvbmRhcnlfaGVhZGVyX2lu
Y2x1ZGVzKToKKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5w
eToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZUNyZWF0b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlQ3JlYXRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRl
RGVmYXVsdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpj
cmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OmNyZWF0ZUJ1aWx0aW5FeGVj
dXRhYmxlKToKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRh
YmxlT3JDcmFzaCk6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhl
Y3V0YWJsZSk6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogcGFyc2Vy
L1BhcnNlckVycm9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlBhcnNlckVycm9yOjp0b0Vy
cm9yT2JqZWN0KToKKyAgICAgICAgKEpTQzo6UGFyc2VyRXJyb3I6OnRocm93U3RhY2tPdmVyZmxv
d09yT3V0T2ZNZW1vcnkpOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAg
KiBwYXJzZXIvUGFyc2VyRXJyb3IuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyRXJyb3I6OnRvRXJy
b3JPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpBc3luY0l0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
UHJvdG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6Cisg
ICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpn
ZXRPd25TdGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmVpZnlB
bGxTdGF0aWNQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6Z2V0UHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0SW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0Tm9uSW5kZXhQcm9wZXJ0eVNsb3QpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OkpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnJlaWZ5U3RhdGljQWNjZXNz
b3IpOgorICAgICAgICAoSlNDOjpzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdCk6CisgICAgICAgICog
cnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKEpTQzo6Z2V0U3RhdGljUHJvcGVydHlTbG90RnJv
bVRhYmxlKToKKyAgICAgICAgKEpTQzo6cmVpZnlTdGF0aWNQcm9wZXJ0eSk6CisgICAgICAgICog
cnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpNYXBQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1NldFByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OlNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHRvb2xz
L0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZUJ1aWx0aW4pOgor
CiAyMDE4LTAzLTI5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgc29tZSBwb2ludGVyIHByb2ZpbGluZyBzdXBwb3J0IHRvIEIzIGFuZCBBaXIuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMzYyN2Y0MWRkMTY1YTFhNDcxNmY3NGZlMmM2YWRlMjNlMDhjYjAwMi4uMjY0NTQ1MzFk
NTI2NzYwM2ViMTliNGY3YzA4M2QzMDdmOTQ4M2Q4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2
IEBACisyMDE4LTAzLTMwICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisK
KyAgICAgICAgQSBzdGFjayBvdmVyZmxvdyBpbiB0aGUgcGFyc2luZyBvZiBhIGJ1aWx0aW4gKGNh
bGxlZCBieSBjcmVhdGVFeGVjdXRhYmxlKSBjYXVzZSBhIGNyYXNoIGluc3RlYWQgb2YgYSBjYXRj
aGFibGUganMgZXhjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODQwNzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM3MTY1ODk3PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEtlaXRoIE1pbGxlci4KKworICAgICAgICBJIGhhZCB0byBzbGln
aHRseSBjaGFuZ2UgdGhlIHR5cGUgb2Ygc29tZSBiaW5kaW5ncyBiZXR3ZWVuIEpTQyBhbmQgV2Vi
Q29yZS4gTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQgb24gdGhlIFdlYkNvcmUgc2lkZS4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0
b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQnVpbHRpblJlYWRhYmxlU3RyZWFtRGVmYXVs
dFJlYWRlclByaXZhdGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNCdWlsdGluUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlclByaXZh
dGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNCdWlsdGluUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlclByaXZhdGVDb25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZUV4ZWN1dGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNCdWlsdGluUmVhZGFi
bGVTdHJlYW1CWU9CUmVhZGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0
UHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZSk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUNvbnN0
cnVjdG9ySGVscGVyTWV0aG9kcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluaXRp
YWxpemVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUpOgorCiAy
MDE4LTAzLTI5ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAg
W1dlYiBBbmltYXRpb25zXSBDb3JyZWN0bHkgb2J0YWluIHRoZSB0aW1pbmcgZnVuY3Rpb24gZm9y
IGEgZ2l2ZW4ga2V5ZnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzU0OGJh
YzIzN2YwMjg4NTkxMDUzMWUyOGYwYzRkN2M5OWNiN2E4NS4uOTk0ODU3NGRhNWViNmQxZDM2ODI4
OWJkM2I5ZGM2ZDY2ZDgyNmYzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2
NzUsNyArMTY3NSw2IEBACiAJCURDRjNENTZEMUNEMjk0NzYwMDNENUM2NSAvKiBMYXp5UHJvcGVy
dHlJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBEQ0YzRDU2ODFDRDI5NDY4MDAzRDVDNjUgLyogTGF6eVByb3BlcnR5SW5saW5lcy5oICovOyB9
OwogCQlEQ0ZERkJEOTFEMUY1RDlCMDBGRTNENzIgLyogQjNCb3R0b21Qcm92aWRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRENGREZCRDcxRDFGNUQ5
ODAwRkUzRDcyIC8qIEIzQm90dG9tUHJvdmlkZXIuaCAqLzsgfTsKIAkJRENGREZCREExRDFGNUQ5
RTAwRkUzRDcyIC8qIEIzVHlwZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRENGREZCRDgxRDFGNUQ5ODAwRkUzRDcyIC8qIEIzVHlwZU1hcC5oICov
OyB9OwotCQlERTI2RTkwMzFDQjVERDA1MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVh
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTI2
RTkwMjFDQjVERDA1MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmggKi87IH07
CiAJCURFQTdFMjQ1MUJCQzY3N0YwMEQ3ODQ0MCAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzkxN0U3
QzFCNzkxMTA2MDAwRUJEMzMgLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxMjRBOEY3MEU1NTU3
NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpT
U3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTMxNjE4MTMxRUM1RkUxNzAwMDZBMjE4IC8qIERPTUFubm90YXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMTYxODEwMUVDNUZFMDgwMDA2
QTIxOCAvKiBET01Bbm5vdGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTMxNjIsNiArMzE2MSw3IEBACiAJCTFDQUE4QjRBMEQzMkMzOUEw
MDQxQkNGRiAvKiBKYXZhU2NyaXB0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEphdmFTY3JpcHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBQThCNEIwRDMy
QzM5QTAwNDFCQ0ZGIC8qIEphdmFTY3JpcHRDb3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEphdmFTY3JpcHRDb3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTIwRUNCMTVFRkM1MjQ2MjRCQzJGMDJENSAvKiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZU5hbWVzcGFjZUFj
Y2Vzc0Nhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyMjBDNjBDNjIwNkNF
QUJEMDBGQzQ2MzcgLyogUGFyc2VyRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFyc2Vy
RXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjAwQjVBNDE1MkJBQUE3
MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNTdHJpbmdKb2luZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyNjAwQjVBNTE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdKb2luZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMjYyRDg1QjQxQzBENjUwRjAwNkFDQjYxIC8qIEFpckZpeFBhcnRp
YWxSZWdpc3RlclN0YWxscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwOyBwYXRoID0gYjMvYWlyL0FpckZpeFBh
cnRpYWxSZWdpc3RlclN0YWxscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
NTEzLDggKzQ1MTMsNiBAQAogCQlEQ0YzRDU2ODFDRDI5NDY4MDAzRDVDNjUgLyogTGF6eVByb3Bl
cnR5SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXp5UHJvcGVy
dHlJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDRkRGQkQ3MUQxRjVE
OTgwMEZFM0Q3MiAvKiBCM0JvdHRvbVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEIzQm90dG9tUHJvdmlkZXIuaDsgcGF0aCA9IGIzL0IzQm90dG9tUHJvdmlkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRENGREZCRDgxRDFGNUQ5ODAwRkUzRDcy
IC8qIEIzVHlwZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1R5cGVN
YXAuaDsgcGF0aCA9IGIzL0IzVHlwZU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlERTI2RTkwMjFDQjVERDA1MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlERTI2RTkwNjFDQjVERDk2MDBEMkJF
ODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCURFNUEwOUZGMUJBM0FDM0UwMDNENDQyNCAvKiBJbnRyaW5zaWNF
bWl0dGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludHJpbnNp
Y0VtaXR0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTI0QThGNTBFNTU1
Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gT3BhcXVlSlNTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTEyNEE4RjYwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9wYXF1ZUpTU3RyaW5nLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYzNjQsNiArNjM2Miw3IEBACiAJCQkJOTNGMEIzQUEwOUJC
NERDMDAwNjhGQ0UzIC8qIFBhcnNlci5oICovLAogCQkJCTkzMDUyQzMyMEZCNzkyMTkwMDQ4RkRD
MyAvKiBQYXJzZXJBcmVuYS5jcHAgKi8sCiAJCQkJOTMwNTJDMzMwRkI3OTIxOTAwNDhGREMzIC8q
IFBhcnNlckFyZW5hLmggKi8sCisJCQkJMjIwQzYwQzYyMDZDRUFCRDAwRkM0NjM3IC8qIFBhcnNl
ckVycm9yLmNwcCAqLywKIAkJCQkwRkNDQUU0MzE2RDBDRjZFMDBEMEM2NUIgLyogUGFyc2VyRXJy
b3IuaCAqLywKIAkJCQk5QjQ5NTRFODFBNjY0MERCMDAyODE1QTYgLyogUGFyc2VyRnVuY3Rpb25J
bmZvLmggKi8sCiAJCQkJQTc3RjE4MjQxNjQxOTI1NDAwNjQwQTQ3IC8qIFBhcnNlck1vZGVzLmgg
Ki8sCkBAIC03OTE4LDggKzc5MTcsNiBAQAogCQkJCTVCODI0MzA0MURCN0FBNDkwMEVBNjM4NCAv
KiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzICovLAogCQkJCThCQzA2NDgyMUUxODBCNEEwMEIy
QjhDQSAvKiBBc3luY0dlbmVyYXRvclByb3RvdHlwZS5qcyAqLywKIAkJCQk4QkMwNjQ5NTFFMUQ4
MzhCMDBCMkI4Q0EgLyogQXN5bmNJdGVyYXRvclByb3RvdHlwZS5qcyAqLywKLQkJCQlERTI2RTkw
NjFDQjVERDk2MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmNwcCAqLywKLQkJ
CQlERTI2RTkwMjFDQjVERDA1MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmgg
Ki8sCiAJCQkJQTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5j
cHAgKi8sCiAJCQkJQTdEODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxl
cy5oICovLAogCQkJCUUzODBENjZCMUYxOTI0OUQwMEE1OTA5NSAvKiBCdWlsdGluTmFtZXMuY3Bw
ICovLApAQCAtODM1MSw3ICs4MzQ4LDYgQEAKIAkJCQk5QjQ2OTQzOTFGOTc0MzlFMDBDQ0IzRjkg
LyogQm9vbGVhblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk2QjczMTkxQkRBMDY4
MDAwMzMxQjg0IC8qIEJvb2xlYW5Qcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RUEwODYyMDE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJREUyNkU5MDMxQ0I1REQwNTAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5F
eGVjdXRhYmxlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc1RUU5QjIxOEFBQjdFMjAwQUFEMDQz
IC8qIEJ1aWx0aW5OYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlEQTAwQTYxQkQ1OTkzMTAw
RjQ1NzVDIC8qIGJ1aWx0aW5zLnB5IGluIEhlYWRlcnMgKi8sCkBAIC05MDQ0LDcgKzkwNDAsNiBA
QAogCQkJCUE1MDNGQTFFMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwMTNDQThDMUI0OTFBOTQwMENBRTYxMyAv
KiBKU0pvYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTYwRTE2RjVDRDAwQjM0NDYwIC8q
IEpTTGV4aWNhbEVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk3QTk3NzRBODIwNkI4
MkU0MDA4RDAzRDAgLyogSlNXZWFrVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDIz
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUMyNUQ3MDlD
MTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkE0QkI3RjMxOEE0MTE3OTAwOEEwRkNEIC8qIEpTTWFuYWdlZFZhbHVlSW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLApAQCAtOTExNiw2ICs5MTExLDcgQEAKIAkJCQlBNzQ4MkI5MzExNjcxMTQ3MDAz
QjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYwQjI4NkIxRUI4RTZDRjAwMEVCNUQyIC8qIEpTV2Vha1ByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTcwOUZCODY4MUFFMzM1QzYwMDM5RDA2OSAvKiBKU1dlYWtTZXQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTdBOTc3NEE4MjA2QjgyRTQwMDhEMDNEMCAvKiBKU1dlYWtWYWx1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQUQ1QzM2RUIxRjc1QUQ3MzAwMEJDQUFGIC8qIEpTV2ViQXNzZW1ibHku
aCBpbiBIZWFkZXJzICovLAogCQkJCUFEOUU4NTJGMUU4QTBDN0MwMDhERTM5RSAvKiBKU1dlYkFz
c2VtYmx5Q29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OUVGRDQ4NDFFQkMwNDVDMDBG
M0RGRUEgLyogSlNXZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZS5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9i
dWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkK
aW5kZXggY2RlMzU3Y2Q0MzljZWFmNDQ2NDI4ZTY4MTg4NDc4MDczYzAzYzQ5ZC4uNzIxNGNkYWE1
OTQzYjhiY2NhYzMzZTJjMDdmOWZmM2VjMTI3N2Q5NCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaGVh
ZGVyLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0
aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weQpAQCAtNjYsMTIgKzY2LDE3IEBAIGNsYXNz
IEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJHZW5lcmF0b3IoQnVpbHRpbnNHZW5lcmF0b3IpOgogICAg
ICAgICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMpCiAKICAgICBkZWYgZ2VuZXJhdGVfZm9y
d2FyZF9kZWNsYXJhdGlvbnMoc2VsZik6Ci0gICAgICAgIHJldHVybiAiIiJuYW1lc3BhY2UgSlND
IHsKKyAgICAgICAgcmV0dXJuICIiIgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorCituYW1l
c3BhY2UgSlNDIHsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIFZNOworY2xhc3Mg
UGFyc2VyRXJyb3I7CiAKIGVudW0gY2xhc3MgQ29uc3RydWN0QWJpbGl0eSA6IHVuc2lnbmVkOwot
fSIiIgorfQorIiIiCiAKICAgICBkZWYgZ2VuZXJhdGVfc2VjdGlvbl9mb3Jfb2JqZWN0KHNlbGYs
IG9iamVjdCk6CiAgICAgICAgIGxpbmVzID0gW10KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRl
ci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dl
bmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weQppbmRleCA1OGM4ZjJhYzhhNjQxNWEyOTFjZmY4ODhj
ZjFmNjgwYzFkNjYwNDdkLi4xODg5NjI1OWIyZjNlYTZhOTYwNGE5YzQ4ZTBlMTk1ZDA2OGNiZjJh
IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWls
dGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5
CkBAIC05Miw2ICs5MiwxMCBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgICAgICAg
ICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oIiksCiAgICAgICAgICAgICApLAogCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisg
ICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJwYXJzZXIvUGFyc2VyRXJyb3IuaCIp
LAorICAgICAgICAgICAgKSwKKwogICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAogICAgICAgICAg
ICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAiYnVpbHRpbnMvQnVpbHRpblV0aWxzLmgiKSwKICAg
ICAgICAgICAgICksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9i
dWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkKaW5kZXggOTA3YTZkNzE3YzkxMGNi
MDcyOTk1MDljNjFkZjg0NmE5YzcwMWVmYy4uZGQ5ODk0Nzg3YWQ4YzllZjRiZmI0ZTEyNDEzZDNi
OWE3N2RkNGRjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVp
bHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQpAQCAtNjgsMTQgKzY4LDE0IEBA
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogICAgIENvbWJpbmVkSGVhZGVyU3Rh
dGljTWFjcm9zID0gKAogICAgICIiIiNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihj
b2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJndW1lbnRDb3VudCkgXFwK
LSAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZN
Jik7CisgICAgRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVy
cm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKIAogJHttYWNyb1ByZWZpeH1fRk9S
RUFDSF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUNM
QVJFX0JVSUxUSU5fR0VORVJBVE9SIiIiKQogCiAgICAgU2VwYXJhdGVIZWFkZXJTdGF0aWNNYWNy
b3MgPSAoCiAgICAgIiIiI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1l
LCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcXAotICAgIEpT
Qzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKyAg
ICBFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNv
ZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOwogCiAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7
b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQogI3Vu
ZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IiIiIpCkBAIC04Myw5ICs4MywxMiBAQCAke21h
Y3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShERUNMQVJFX0JV
SUxUSU5fR0VORVJBVE9SKQogICAgIENvbWJpbmVkSlNDSW1wbGVtZW50YXRpb25TdGF0aWNNYWNy
b3MgPSAoCiAgICAgIiIiCiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFt
ZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKLUpTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAor
RXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBjb2Rl
TmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAoge1xcCi0gICAgcmV0dXJuIHZtLmJ1aWx0
aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWls
dGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNj
b2RlTmFtZSMjSW50cmluc2ljKTsgXAorICAgIGF1dG8gZXhwZWN0ZWRVbmxpbmtlZCA9IHZtLmJ1
aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpO1xcCisgICAgaWYgKCFl
eHBlY3RlZFVubGlua2VkLmhhc192YWx1ZSgpKVxcCisgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChleHBlY3RlZFVubGlua2VkLmVycm9yKCkpO1xcCisgICAgICAgIHJldHVybiBleHBlY3Rl
ZFVubGlua2VkLnZhbHVlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2Rl
TmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpO1xc
CiB9CiAke21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9H
RU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCkBAIC05NCw5ICs5Nywx
MiBAQCAke21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9H
RU5FUkFUT1IpCiAgICAgU2VwYXJhdGVKU0NJbXBsZW1lbnRhdGlvblN0YXRpY01hY3JvcyA9ICgK
ICAgICAiIiIKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5j
dGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcXAotSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCitFeHBlY3Rl
ZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNH
ZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCiB7XFwKLSAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1
dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVj
dXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1l
IyNJbnRyaW5zaWMpOyBcCisgICAgYXV0byBleHBlY3RlZFVubGlua2VkID0gdm0uYnVpbHRpbkV4
ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCk7XFwKKyAgICBpZiAoIWV4cGVjdGVk
VW5saW5rZWQuaGFzX3ZhbHVlKCkpXFwKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV4
cGVjdGVkVW5saW5rZWQuZXJyb3IoKSk7XFwKKyAgICByZXR1cm4gZXhwZWN0ZWRVbmxpbmtlZC52
YWx1ZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJj
ZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTtcXAogfQogJHttYWNy
b1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxU
SU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpAQCAtMTA1LDEw
ICsxMTEsMTAgQEAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElO
X0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogICAgIENvbWJpbmVkV2ViQ29yZUltcGxl
bWVudGF0aW9uU3RhdGljTWFjcm9zID0gKAogICAgICAgICAiIiIKICNkZWZpbmUgREVGSU5FX0JV
SUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBh
cmd1bWVudENvdW50KSBcXAotSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5l
cmF0b3IoSlNDOjpWTSYgdm0pIFxcCitFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSos
IEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCiB7
XFwKICAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGll
bnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFxcCi0gICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0
aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRh
YmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5h
bWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29k
ZU5hbWUjI0ludHJpbnNpYyk7IFxcCisgICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5j
dGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCku
dmFsdWUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0
TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNj
b2RlTmFtZSMjSW50cmluc2ljKTsgXFwKIH0KICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJ
Tl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9H
RU5FUkFUT1IKQEAgLTExNywxMCArMTIzLDEwIEBAICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJ
TFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICAgICBTZXBhcmF0ZVdlYkNvcmVJ
bXBsZW1lbnRhdGlvblN0YXRpY01hY3JvcyA9ICgKICAgICAgICAgIiIiCiAjZGVmaW5lIERFRklO
RV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFt
ZSwgYXJndW1lbnRDb3VudCkgXFwKLUpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMj
R2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAorRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGUqLCBKU0M6OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBc
XAoge1xcCiAgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZN
Q2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcXAotICAgIHJldHVybiBjbGllbnREYXRhLT5i
dWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhl
Y3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmpl
Y3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18j
I2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGlu
RnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJs
ZSgpLnZhbHVlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29i
amVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBz
XyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFxcCiB9CiAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7
b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5k
ZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCkBAIC0xMzksNyArMTQ1LDcgQEAgcHVibGljOgog
ICAgIH0KIAogI2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlv
bk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpIFxcCi0gICAgSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcXAorRXhwZWN0ZWQ8SlNDOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IG5hbWUjI0V4ZWN1dGFi
bGUoKTsgXFwKICAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIGNvbnN0
IHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KICAgICAke21hY3JvUHJlZml4fV9GT1JFQUNI
XyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykK
ICN1bmRlZiBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUwpAQCAtMTYyLDcgKzE2OCw3IEBAIHBy
aXZhdGU6CiB9OwogCiAjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1
bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGxlbmd0aCkgXFwKLWlubGluZSBKU0M6OlVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiAke29iamVjdE5hbWV9QnVpbHRpbnNXcmFwcGVyOjpuYW1l
IyNFeGVjdXRhYmxlKCkgXFwKK2lubGluZSBFeHBlY3RlZDxKU0M6OlVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gJHtvYmplY3ROYW1lfUJ1aWx0aW5zV3JhcHBl
cjo6bmFtZSMjRXhlY3V0YWJsZSgpIFxcCiB7XFwKICAgICBpZiAoIW1fIyNuYW1lIyNFeGVjdXRh
YmxlKSB7XFwKICAgICAgICAgSlNDOjpJZGVudGlmaWVyIGV4ZWN1dGFibGVOYW1lID0gZnVuY3Rp
b25OYW1lIyNQdWJsaWNOYW1lKCk7XFwKQEAgLTIwMiw3ICsyMDgsNyBAQCBwdWJsaWM6CiBpbmxp
bmUgdm9pZCAke29iamVjdE5hbWV9QnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpTR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAjZGVmaW5lIEVYUE9SVF9GVU5DVElPTihjb2RlTmFt
ZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgbGVuZ3RoKVxcCi0gICAgbV8jI2Z1bmN0
aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNGdW5jdGlv
bjo6Y3JlYXRlKG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0b3IobV92bSksICZnbG9iYWxPYmplY3Qp
KTsKKyAgICBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbi5zZXQobV92bSwgJmdsb2JhbE9iamVj
dCwgSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGUobV92bSwgY29kZU5hbWUjI0dlbmVyYXRvcihtX3Zt
KS52YWx1ZSgpLCAmZ2xvYmFsT2JqZWN0KSk7CiAgICAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8k
e29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoRVhQT1JUX0ZVTkNUSU9OKQogI3VuZGVmIEVYUE9S
VF9GVU5DVElPTgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGFhOTYzZjUyNzVj
MGVkYzhlNjU0Nzk1ZWI1YTg5Yjk2NzFjYWU1YmMuLjQ5ZjU3ZGRjMjVmM2MxMzYzNzE2YTVhODFk
YTQ0ZDg1MTk1ZGNjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTE3OSw3ICsx
NzksNiBAQCBiaW5kaW5ncy9TY3JpcHRPYmplY3QuY3BwCiBiaW5kaW5ncy9TY3JpcHRWYWx1ZS5j
cHAKIAogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAotYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVDcmVhdG9yLmNwcAogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmNwcAogCiBieXRlY29k
ZS9BY2Nlc3NDYXNlLmNwcApAQCAtNjU0LDYgKzY1Myw3IEBAIHBhcnNlci9Ob2Rlcy5jcHAKIHBh
cnNlci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwCiBwYXJzZXIvUGFyc2VyLmNwcAogcGFyc2VyL1Bh
cnNlckFyZW5hLmNwcAorcGFyc2VyL1BhcnNlckVycm9yLmNwcAogcGFyc2VyL1NvdXJjZVByb3Zp
ZGVyLmNwcAogcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwCiBwYXJzZXIvVW5saW5rZWRT
b3VyY2VDb2RlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMmI3OWU3ZTZlZjk1Y2UyMWM0NDMyM2E2ZWE0MWQzNmEzM2ZhMzU5NS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVD
cmVhdG9yLmgiCi0KLSNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKLQotbmFtZXNwYWNl
IEpTQyB7Ci0KLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0
YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIENvbnN0cnVjdG9yS2luZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGFiaWxpdHkpCi17
Ci0gICAgcmV0dXJuIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZSh2bSwgc291
cmNlLCBpZGVudCwga2luZCwgYWJpbGl0eSk7Ci19Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0
YWJsZUNyZWF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZUNyZWF0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTljMDg4NGI3
YjYxZGYwODBjZGFjM2FlNWNiMmQwNmVlMzM1YWUxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVDcmVhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpbmNsdWRlICJDb25zdHJ1Y3RBYmlsaXR5LmgiCi0jaW5jbHVkZSAiUGFyc2VyTW9kZXMu
aCIKLSNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1KU19FWFBP
UlRfUFJJVkFURSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1
dGFibGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIENvbnN0cnVj
dG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSk7Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNw
cAppbmRleCBhZDBkODM5YWUxOTE4NDA0OTNjNjVmYzQyODJkNDc1NTIxMDcxNmRjLi5lZjY5OTYw
NjEyYTJiOWJlODc0Y2NkYjg2M2RmMzljODVlYzU0NTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKICNpbmNsdWRlICJQYXJzZXIuaCIKKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01MSwyNSAr
NTIsMzQgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6
Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENvbnN0cnUKICAgICBjYXNlIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZToKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6OkJhc2U6
Ci0gICAgICAgIHJldHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIG1ha2VTb3VyY2UoYmFzZUNv
bnN0cnVjdG9yQ29kZSwgeyB9KSwgbmFtZSwgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmls
aXR5OjpDYW5Db25zdHJ1Y3QpOworICAgICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZU9yQ3Jh
c2gobV92bSwgbWFrZVNvdXJjZShiYXNlQ29uc3RydWN0b3JDb2RlLCB7IH0pLCBuYW1lLCBjb25z
dHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCk7CiAgICAgY2FzZSBD
b25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHM6Ci0gICAgICAgIHJldHVybiBjcmVhdGVFeGVjdXRhYmxl
KG1fdm0sIG1ha2VTb3VyY2UoZGVyaXZlZENvbnN0cnVjdG9yQ29kZSwgeyB9KSwgbmFtZSwgY29u
c3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QpOworICAgICAgICBy
ZXR1cm4gY3JlYXRlRXhlY3V0YWJsZU9yQ3Jhc2gobV92bSwgbWFrZVNvdXJjZShkZXJpdmVkQ29u
c3RydWN0b3JDb2RlLCB7IH0pLCBuYW1lLCBjb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxp
dHk6OkNhbkNvbnN0cnVjdCk7CiAgICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBudWxscHRyOworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUJ1
aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvdXJjZUNvZGUmIGNvZGUsIGNvbnN0IElkZW50aWZpZXIm
IG5hbWUsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSkKK0V4cGVjdGVkVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUgQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhl
Y3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiBjb2RlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBD
b25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUV4
ZWN1dGFibGUobV92bSwgY29kZSwgbmFtZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBjb25zdHJ1
Y3RBYmlsaXR5KTsKIH0KIAogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0
aW5FeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgY29kZSwgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KQogewotICAgIHJl
dHVybiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUodm0sIGNvZGUsIG5hbWUs
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgY29uc3RydWN0QWJpbGl0eSk7CisgICAgcmV0dXJuIEJ1
aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZU9yQ3Jhc2godm0sIGNvZGUsIG5hbWUs
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgY29uc3RydWN0QWJpbGl0eSk7CiB9CiAKLVVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUo
Vk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0IElkZW50aWZpZXImIG5hbWUs
IENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3Ry
dWN0QWJpbGl0eSkKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJs
ZXM6OmNyZWF0ZUV4ZWN1dGFibGVPckNyYXNoKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JL
aW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkpCit7CisgICAgYXV0byBleHBl
Y3RlZCA9IEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZSh2bSwgc291cmNlLCBu
YW1lLCBjb25zdHJ1Y3RvcktpbmQsIGNvbnN0cnVjdEFiaWxpdHkpOworICAgIGlmICghZXhwZWN0
ZWQuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgZGF0YUxvZ0xuKCJGYXRhbCBlcnJvciBjb21waWxp
bmcgYnVpbHRpbiBmdW5jdGlvbiAnIiwgbmFtZS5zdHJpbmcoKSwgIiciKTsKKyAgICAgICAgQ1JB
U0goKTsKKyAgICB9CisgICAgcmV0dXJuIGV4cGVjdGVkLnZhbHVlKCk7Cit9CisKK0V4cGVjdGVk
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVj
dXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5
IGNvbnN0cnVjdEFiaWxpdHkpCiB7CiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZTsKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKQEAgLTgzLDggKzkzLDggQEAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0
YWJsZShWTSYgdm0sIGNvbnN0IFMKICAgICAgICAgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUs
IGNvbnN0cnVjdG9yS2luZCk7CiAKICAgICBpZiAoIXByb2dyYW0pIHsKLSAgICAgICAgZGF0YUxv
ZygiRmF0YWwgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW4gZnVuY3Rpb24gJyIsIG5hbWUuc3RyaW5n
KCksICInOiAiLCBlcnJvci5tZXNzYWdlKCkpOwotICAgICAgICBDUkFTSCgpOworICAgICAgICBS
RUxFQVNFX0FTU0VSVChlcnJvci5pc1ZhbGlkKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoV1RGTW92ZShlcnJvcikpOwogICAgIH0KIAogICAgIFN0YXRlbWVudE5vZGUqIGV4cHJT
dGF0ZW1lbnQgPSBwcm9ncmFtLT5zaW5nbGVTdGF0ZW1lbnQoKTsKQEAgLTEwNiw3ICsxMTYsNyBA
QCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVF
eGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgUwogICAgIG1ldGFkYXRhLT5vdmVycmlkZU5hbWUobmFt
ZSk7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBkdW1teVREWlZhcmlhYmxlczsKICAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0
cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgZHVtbXlURFpWYXJpYWJs
ZXMsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgV1RGTW92ZShwYXJlbnRTb3VyY2VPdmVycmlk
ZSkpOwotICAgIHJldHVybiBmdW5jdGlvbkV4ZWN1dGFibGU7CisgICAgcmV0dXJuIEV4cGVjdGVk
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoZnVuY3Rpb25FeGVjdXRhYmxlKTsKIH0KIAogdm9p
ZCBCdWlsdGluRXhlY3V0YWJsZXM6OmZpbmFsaXplKEhhbmRsZTxVbmtub3duPiwgdm9pZCogY29u
dGV4dCkKQEAgLTExNSwxNSArMTI1LDE4IEBAIHZvaWQgQnVpbHRpbkV4ZWN1dGFibGVzOjpmaW5h
bGl6ZShIYW5kbGU8VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpCiB9CiAKICNkZWZpbmUgREVGSU5F
X0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZU5hbWUsIGxl
bmd0aCkgXAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6
bmFtZSMjRXhlY3V0YWJsZSgpIFwKK0V4cGVjdGVkVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUg
QnVpbHRpbkV4ZWN1dGFibGVzOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAoge1wKICAgICBpZiAoIW1f
IyNuYW1lIyNFeGVjdXRhYmxlKSB7XAogICAgICAgICBJZGVudGlmaWVyIGV4ZWN1dGFibGVOYW1l
ID0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mdW5jdGlvbk5hbWUjI1B1Ymxp
Y05hbWUoKTtcCiAgICAgICAgIGlmIChvdmVycmlkZU5hbWUpXAogICAgICAgICAgICAgZXhlY3V0
YWJsZU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZtX3ZtLCBvdmVycmlkZU5hbWUpO1wK
LSAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBXZWFrPFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlPihjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtXyMjbmFtZSMjU291cmNlLCBleGVjdXRh
YmxlTmFtZSwgc18jI25hbWUjI0NvbnN0cnVjdEFiaWxpdHkpLCB0aGlzLCAmbV8jI25hbWUjI0V4
ZWN1dGFibGUpO1wKKyAgICAgICAgRXhwZWN0ZWRVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBm
ID0gY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV8jI25hbWUjI1NvdXJjZSwgZXhlY3V0YWJsZU5h
bWUsIHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KTtcCisgICAgICAgIGlmICghZi5oYXNfdmFs
dWUoKSlcCisgICAgICAgICAgICByZXR1cm4gZjtcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRh
YmxlID0gV2VhazxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4oZi52YWx1ZSgpLCB0aGlzLCAm
bV8jI25hbWUjI0V4ZWN1dGFibGUpO1wKICAgICB9XAotICAgIHJldHVybiBtXyMjbmFtZSMjRXhl
Y3V0YWJsZS5nZXQoKTtcCisgICAgcmV0dXJuIEV4cGVjdGVkVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUobV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCkpO1wKIH0KIEpTQ19GT1JFQUNIX0JVSUxU
SU5fQ09ERShERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKICN1bmRlZiBFWFBPU0VfQlVJTFRJ
Tl9TT1VSQ0VTCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmgKaW5kZXggMzY4YTMxYjdhY2I2YTMyYzlkNThlNWRlMjgwMWMyODliYmY1
MmEyZi4uY2U1MDhiZTM2NDA0Y2YyNWY4NTk2YTE4ZmMzZTBmZTU1OWI2ODJiMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaApA
QCAtMjYsMTAgKzI2LDExIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkpTQ0J1aWx0aW5z
LmgiCi0jaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNs
dWRlICJTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiV2Vhay5oIgogI2luY2x1ZGUgIldlYWtIYW5k
bGVPd25lci5oIgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtMzcsMTMgKzM4LDE1IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwog
Y2xhc3MgSWRlbnRpZmllcjsKIGNsYXNzIFZNOwogCit1c2luZyBFeHBlY3RlZFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlID0gRXhwZWN0ZWQ8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBQ
YXJzZXJFcnJvcj47CisKIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlcyBmaW5hbDogcHJpdmF0ZSBX
ZWFrSGFuZGxlT3duZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IEJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYpOwogCiAjZGVmaW5lIEVYUE9TRV9C
VUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGxl
bmd0aCkgXAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsg
XAorRXhwZWN0ZWRVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBuYW1lIyNFeGVjdXRhYmxlKCk7
IFwKIGNvbnN0IFNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIHsgcmV0dXJuIG1fIyNuYW1lIyNT
b3VyY2U7IH0KICAgICAKICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoRVhQT1NFX0JVSUxU
SU5fRVhFQ1VUQUJMRVMpCkBAIC01MSwxMyArNTQsMTQgQEAgY29uc3QgU291cmNlQ29kZSYgbmFt
ZSMjU291cmNlKCkgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQogCiAgICAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvcihDb25zdHJ1Y3Rvcktp
bmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwogCi0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGNv
bnN0IElkZW50aWZpZXImLCBDb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHkpOworICAg
IHN0YXRpYyBFeHBlY3RlZFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGNyZWF0ZUV4ZWN1dGFi
bGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIENvbnN0cnVjdG9y
S2luZCwgQ29uc3RydWN0QWJpbGl0eSk7CisgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlT3JDcmFzaChWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBj
b25zdCBJZGVudGlmaWVyJiwgQ29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5KTsKIHBy
aXZhdGU6CiAgICAgdm9pZCBmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4sIHZvaWQqIGNvbnRleHQp
IG92ZXJyaWRlOwogCiAgICAgVk0mIG1fdm07CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElk
ZW50aWZpZXImLCBDb25zdHJ1Y3RBYmlsaXR5KTsKKyAgICBFeHBlY3RlZFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvdXJjZUNvZGUmLCBj
b25zdCBJZGVudGlmaWVyJiwgQ29uc3RydWN0QWJpbGl0eSk7CiAKICNkZWZpbmUgREVDTEFSRV9C
VUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUs
IGxlbmd0aClcCiAgICAgU291cmNlQ29kZSBtXyMjbmFtZSMjU291cmNlOyBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
aW5kZXggMGVkZmUzZGY0ZWY2MzhjMTEyNWE3YzJhMzkwYjM4MGE0ZDJjMjE0Ni4uZGRiNDYxMjI2
ZTM3NDY1NmFmMGIxMjU5ZjM1Yzg5N2Y2YTNjNTExMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMzEsNiAr
MzEsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRl
ICJFcnJvci5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0
ZXIuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJyb3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJFcnJvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY5YWM3YWI0
M2YwY2NjNDdjNGNjMWJiOWRiMGJmZjhkZjNkOGUyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJyb3IuY3BwCkBAIC0wLDAgKzEsMTE4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhcnNlckVycm9yLmgiCisKKyNpbmNsdWRlICJFcnJvckhh
bmRsaW5nU2NvcGUuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCisjaW5jbHVkZSAi
SGVhcENlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBKU0MgeworSlNPYmplY3QqIFBhcnNlckVycm9yOjp0b0Vycm9yT2JqZWN0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgaW50IG92
ZXJyaWRlTGluZU51bWJlcikKK3sKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKTsKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgRXJyb3JOb25l
OgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBjYXNlIFN5bnRheEVycm9yOiB7CisgICAg
ICAgIGF1dG8gc3ludGF4RXJyb3IgPSBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBtX21lc3NhZ2Up
OworICAgICAgICBhdXRvIGxpbmUgPSBvdmVycmlkZUxpbmVOdW1iZXIgPT0gLTEgPyBtX2xpbmUg
OiBvdmVycmlkZUxpbmVOdW1iZXI7CisgICAgICAgIHJldHVybiBhZGRFcnJvckluZm8oZXhlYywg
c3ludGF4RXJyb3IsIGxpbmUsIHNvdXJjZSk7CisgICAgfQorICAgIGNhc2UgRXZhbEVycm9yOgor
ICAgICAgICByZXR1cm4gY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgbV9tZXNzYWdlKTsKKyAgICBj
YXNlIFN0YWNrT3ZlcmZsb3c6IHsKKyAgICAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2Nv
cGUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVN0YWNrT3ZlcmZs
b3dFcnJvcihleGVjKTsKKyAgICB9CisgICAgY2FzZSBPdXRPZk1lbW9yeToKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgfQorICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK0pTT2JqZWN0KiBQYXJzZXJFcnJvcjo6dGhyb3dTdGFj
a092ZXJmbG93T3JPdXRPZk1lbW9yeShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgRXJyb3JOb25lOgorICAgIGNhc2UgRXZh
bEVycm9yOgorICAgIGNhc2UgU3ludGF4RXJyb3I6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgY2FzZSBTdGFja092ZXJmbG93OgorICAgICAgICByZXR1cm4gdGhy
b3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOworICAgIGNhc2UgT3V0T2ZNZW1vcnk6
CisgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOworICAg
IH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorfSAvLyBuYW1lc3BhY2Ug
SlNDCisKK25hbWVzcGFjZSBXVEYgewordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBv
dXQsIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9yVHlwZSB0eXBlKQoreworICAgIHN3aXRj
aCAodHlwZSkgeworICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JOb25lOgor
ICAgICAgICBvdXQucHJpbnQoIlN5bnRheEVycm9yTm9uZSIpOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJvcklycmVjb3ZlcmFibGU6CisgICAg
ICAgIG91dC5wcmludCgiU3ludGF4RXJyb3JJcnJlY292ZXJhYmxlIik7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9yVW50ZXJtaW5hdGVkTGl0
ZXJhbDoKKyAgICAgICAgb3V0LnByaW50KCJTeW50YXhFcnJvclVudGVybWluYXRlZExpdGVyYWwi
KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6U3ludGF4RXJy
b3JSZWNvdmVyYWJsZToKKyAgICAgICAgb3V0LnByaW50KCJTeW50YXhFcnJvclJlY292ZXJhYmxl
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6UGFy
c2VyRXJyb3I6OkVycm9yVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNh
c2UgSlNDOjpQYXJzZXJFcnJvcjo6RXJyb3JOb25lOgorICAgICAgICBvdXQucHJpbnQoIkVycm9y
Tm9uZSIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpTdGFj
a092ZXJmbG93OgorICAgICAgICBvdXQucHJpbnQoIlN0YWNrT3ZlcmZsb3ciKTsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6RXZhbEVycm9yOgorICAgICAgICBv
dXQucHJpbnQoIkV2YWxFcnJvciIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6OlBh
cnNlckVycm9yOjpPdXRPZk1lbW9yeToKKyAgICAgICAgb3V0LnByaW50KCJPdXRPZk1lbW9yeSIp
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJv
cjoKKyAgICAgICAgb3V0LnByaW50KCJTeW50YXhFcnJvciIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9Cit9IC8vIG5hbWVzcGFj
ZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJy
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJyb3IuaAppbmRleCA3
ODgzZWZlZDIyNTAyMmMwMjA2Yjc4NjQwYjVhNzE3ODlkOWNlYTUyLi5jMGJjMzk5NGUxYjJjNDkw
NjY5YTdjODg4Yzg3ZTY2NmEwOGIyYTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlckVycm9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJFcnJvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNSw5ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSAiRXJyb3IuaCIKLSNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKLSNpbmNsdWRlICJF
eGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiUGFyc2VyVG9rZW5zLmgiCiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTg0LDMxICs4MSw4IEBAIHB1YmxpYzoKICAgICBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0KICAgICBp
bnQgbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZTsgfQogCi0gICAgSlNPYmplY3QqIHRvRXJy
b3JPYmplY3QoCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgCi0gICAgICAgIGludCBvdmVycmlkZUxpbmVOdW1iZXIgPSAtMSkK
LSAgICB7Ci0gICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpOwotICAgICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgICAgICBjYXNlIEVycm9yTm9uZToK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBjYXNlIFN5bnRheEVycm9yOgot
ICAgICAgICAgICAgcmV0dXJuIGFkZEVycm9ySW5mbygKLSAgICAgICAgICAgICAgICBleGVjLCAK
LSAgICAgICAgICAgICAgICBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBtX21lc3NhZ2UpLCAKLSAg
ICAgICAgICAgICAgICBvdmVycmlkZUxpbmVOdW1iZXIgPT0gLTEgPyBtX2xpbmUgOiBvdmVycmlk
ZUxpbmVOdW1iZXIsIHNvdXJjZSk7Ci0gICAgICAgIGNhc2UgRXZhbEVycm9yOgotICAgICAgICAg
ICAgcmV0dXJuIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIG1fbWVzc2FnZSk7Ci0gICAgICAgIGNh
c2UgU3RhY2tPdmVyZmxvdzogewotICAgICAgICAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9y
U2NvcGUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKLSAgICAgICAgICAgIHJldHVybiBjcmVhdGVTdGFj
a092ZXJmbG93RXJyb3IoZXhlYyk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBPdXRPZk1lbW9y
eToKLSAgICAgICAgICAgIHJldHVybiBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOwotICAg
ICAgICB9Ci0gICAgICAgIENSQVNIKCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0K
KyAgICBKU09iamVjdCogdG9FcnJvck9iamVjdChKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJj
ZUNvZGUmLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyID0gLTEpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIEpTT2JqZWN0KiB0aHJvd1N0YWNrT3ZlcmZsb3dPck91dE9mTWVtb3J5KEV4ZWNTdGF0ZSog
PSBudWxscHRyKTsKIAogcHJpdmF0ZToKICAgICBKU1Rva2VuIG1fdG9rZW47CkBAIC0xMjEsNDgg
Kzk1LDYgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsK
LQotaW5saW5lIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OlBhcnNl
ckVycm9yOjpTeW50YXhFcnJvclR5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAg
ICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9yTm9uZToKLSAgICAgICAgb3V0LnBy
aW50KCJTeW50YXhFcnJvck5vbmUiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpQ
YXJzZXJFcnJvcjo6U3ludGF4RXJyb3JJcnJlY292ZXJhYmxlOgotICAgICAgICBvdXQucHJpbnQo
IlN5bnRheEVycm9ySXJyZWNvdmVyYWJsZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBK
U0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJvclVudGVybWluYXRlZExpdGVyYWw6Ci0gICAgICAg
IG91dC5wcmludCgiU3ludGF4RXJyb3JVbnRlcm1pbmF0ZWRMaXRlcmFsIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9yUmVjb3ZlcmFibGU6
Ci0gICAgICAgIG91dC5wcmludCgiU3ludGF4RXJyb3JSZWNvdmVyYWJsZSIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19
Ci0KLWlubGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpQYXJz
ZXJFcnJvcjo6RXJyb3JUeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2Fz
ZSBKU0M6OlBhcnNlckVycm9yOjpFcnJvck5vbmU6Ci0gICAgICAgIG91dC5wcmludCgiRXJyb3JO
b25lIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN0YWNr
T3ZlcmZsb3c6Ci0gICAgICAgIG91dC5wcmludCgiU3RhY2tPdmVyZmxvdyIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpFdmFsRXJyb3I6Ci0gICAgICAgIG91
dC5wcmludCgiRXZhbEVycm9yIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpTQzo6UGFy
c2VyRXJyb3I6Ok91dE9mTWVtb3J5OgotICAgICAgICBvdXQucHJpbnQoIk91dE9mTWVtb3J5Iik7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9y
OgotICAgICAgICBvdXQucHJpbnQoIlN5bnRheEVycm9yIik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQordm9pZCBw
cmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JU
eXBlKTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6UGFyc2VyRXJyb3I6
OkVycm9yVHlwZSk7CiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5kZXggODAw
Y2ZhMDk2NDFjMGNhMjgwOGYwNTYwMTJlZGEzZDAyMzIyMzdmNy4uMTc2MTk5MDljNTNmNGZkNTBj
YjJkMzRjYjRkOGEyNGI0NzJiOTEzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTQxLDcgKzQxLDcg
QEAgdm9pZCBBc3luY0l0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8o
KSkpOwogICAgIGRpZEJlY29tZVByb3RvdHlwZSgpOwogCi0gICAgSlNGdW5jdGlvbiogYXN5bmNJ
dGVyYXRvclByb3RvdHlwZUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBhc3luY0l0
ZXJhdG9yUHJvdG90eXBlU3ltYm9sQXN5bmNJdGVyYXRvckdldHRlckNvZGVHZW5lcmF0b3Iodm0p
LCBnbG9iYWxPYmplY3QpOworICAgIEpTRnVuY3Rpb24qIGFzeW5jSXRlcmF0b3JQcm90b3R5cGVG
dW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgYXN5bmNJdGVyYXRvclByb3RvdHlwZVN5
bWJvbEFzeW5jSXRlcmF0b3JHZXR0ZXJDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpLCBnbG9iYWxP
YmplY3QpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5hc3luY0l0ZXJhdG9yU3ltYm9sLCBhc3luY0l0ZXJhdG9yUHJvdG90eXBlRnVuY3Rpb24s
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuY3BwCmluZGV4IGQwZmQ3NjI0N2NiYzE2YjYwYTRiYTJlNGQzYjM1ZTg4ZTZlNDlmZDkuLmE2
ZWQzNWEwMDZmNDgyMDA3N2NkZmU3YWY5ZDEzYzQyODAxNDM4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTYzLDEx
ICs2MywxMSBAQCB2b2lkIEZ1bmN0aW9uUHJvdG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRpZXMo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZwogICAgIEpTRnVuY3Rpb24qIHRvU3Ry
aW5nRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0u
cHJvcGVydHlOYW1lcy0+dG9TdHJpbmcuc3RyaW5nKCksIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJp
bmcpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT50b1N0cmluZywgdG9TdHJpbmdGdW5jdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogCi0gICAgKmFwcGx5RnVuY3Rpb24gPSBwdXREaXJl
Y3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCB2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hcHBseVB1YmxpY05hbWUoKSwgZnVuY3Rpb25Q
cm90b3R5cGVBcHBseUNvZGVHZW5lcmF0b3Iodm0pLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgKmNhbGxGdW5jdGlvbiA9IHB1dERpcmVj
dEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmNhbGxQdWJsaWNOYW1lKCksIGZ1bmN0aW9uUHJv
dG90eXBlQ2FsbENvZGVHZW5lcmF0b3Iodm0pLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YmluZCwg
ZnVuY3Rpb25Qcm90b3R5cGVCaW5kQ29kZUdlbmVyYXRvcih2bSksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICAqYXBwbHlGdW5jdGlvbiA9
IHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFwcGx5UHVibGljTmFtZSgpLCBm
dW5jdGlvblByb3RvdHlwZUFwcGx5Q29kZUdlbmVyYXRvcih2bSkudmFsdWUoKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgICpjYWxsRnVu
Y3Rpb24gPSBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jYWxsUHVibGljTmFt
ZSgpLCBmdW5jdGlvblByb3RvdHlwZUNhbGxDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0
RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
dm0ucHJvcGVydHlOYW1lcy0+YmluZCwgZnVuY3Rpb25Qcm90b3R5cGVCaW5kQ29kZUdlbmVyYXRv
cih2bSkudmFsdWUoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSkpOwogCi0gICAgKmhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24gPSBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIGZ1bmN0aW9uUHJvdG90eXBlU3ltYm9sSGFzSW5zdGFuY2VDb2RlR2VuZXJh
dG9yKHZtKSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAqaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbiA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb25Qcm90b3R5cGVTeW1ib2xIYXNJbnN0YW5j
ZUNvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIGdsb2JhbE9iamVjdCk7CiAgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmhhc0luc3RhbmNlU3ltYm9s
LCAqaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbiwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCmluZGV4IDhmODQwY2M0N2RmNDIzNTUwZDUzYzQ4Njg1M2NkYmQ5Y2Jh
YTZlNWUuLmQ5YTlhMjcwMWNhNmQ4NDExOGFmOTYzMjZlY2QyMmExOWNkYWE0NDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTQ0
MywyNCArNDQzLDI0IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgICAg
ICB9KTsKICAgICBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5pbml0TGF0ZXIoCiAgICAgICAg
IFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Z1bmN0aW9uPiYgaW5pdCkgewotICAgICAgICAgICAg
aW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGFycmF5UHJvdG90eXBlVmFsdWVz
Q29kZUdlbmVyYXRvcihpbml0LnZtKSwgaW5pdC5vd25lcikpOworICAgICAgICAgICAgaW5pdC5z
ZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGFycmF5UHJvdG90eXBlVmFsdWVzQ29kZUdl
bmVyYXRvcihpbml0LnZtKS52YWx1ZSgpLCBpbml0Lm93bmVyKSk7CiAgICAgICAgIH0pOwogICAg
IG1faW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbi5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25z
dCBJbml0aWFsaXplcjxKU0Z1bmN0aW9uPiYgaW5pdCkgewotICAgICAgICAgICAgaW5pdC5zZXQo
SlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIHByb21pc2VPcGVyYXRpb25zSW5pdGlhbGl6ZVBy
b21pc2VDb2RlR2VuZXJhdG9yKGluaXQudm0pLCBpbml0Lm93bmVyKSk7CisgICAgICAgICAgICBp
bml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwgcHJvbWlzZU9wZXJhdGlvbnNJbml0
aWFsaXplUHJvbWlzZUNvZGVHZW5lcmF0b3IoaW5pdC52bSkudmFsdWUoKSwgaW5pdC5vd25lcikp
OwogICAgICAgICB9KTsKIAogICAgIG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uLmluaXRMYXRl
cigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rpb24+JiBpbml0KSB7Ci0g
ICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwgaXRlcmF0b3JI
ZWxwZXJzUGVyZm9ybUl0ZXJhdGlvbkNvZGVHZW5lcmF0b3IoaW5pdC52bSksIGluaXQub3duZXIp
KTsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBpdGVy
YXRvckhlbHBlcnNQZXJmb3JtSXRlcmF0aW9uQ29kZUdlbmVyYXRvcihpbml0LnZtKS52YWx1ZSgp
LCBpbml0Lm93bmVyKSk7CiAgICAgICAgIH0pOwogCiAgICAgbV9wcm9taXNlUmVzb2x2ZUZ1bmN0
aW9uLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rpb24+
JiBpbml0KSB7Ci0gICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52
bSwgcHJvbWlzZUNvbnN0cnVjdG9yUmVzb2x2ZUNvZGVHZW5lcmF0b3IoaW5pdC52bSksIGluaXQu
b3duZXIpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZt
LCBwcm9taXNlQ29uc3RydWN0b3JSZXNvbHZlQ29kZUdlbmVyYXRvcihpbml0LnZtKS52YWx1ZSgp
LCBpbml0Lm93bmVyKSk7CiAgICAgICAgIH0pOwogCi0gICAgbV9uZXdQcm9taXNlQ2FwYWJpbGl0
eUZ1bmN0aW9uLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBwcm9taXNlT3Bl
cmF0aW9uc05ld1Byb21pc2VDYXBhYmlsaXR5Q29kZUdlbmVyYXRvcih2bSksIHRoaXMpKTsKKyAg
ICBtX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIHByb21pc2VPcGVyYXRpb25zTmV3UHJvbWlzZUNhcGFiaWxpdHlDb2RlR2Vu
ZXJhdG9yKHZtKS52YWx1ZSgpLCB0aGlzKSk7CiAgICAgbV9mdW5jdGlvblByb3RvSGFzSW5zdGFu
Y2VTeW1ib2xGdW5jdGlvbi5zZXQodm0sIHRoaXMsIGhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24p
OwogICAgIG1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIuaW5pdExhdGVyKAogICAgICAgICBb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8R2V0dGVyU2V0dGVyPiYgaW5pdCkgewpAQCAtNDkxLDcgKzQ5
MSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fZnVuY3Rpb25Q
cm90b3R5cGUtPmluaXRSZXN0cmljdGVkUHJvcGVydGllcyhleGVjLCB0aGlzKTsKIAogICAgIG1f
c3BlY2llc0dldHRlclNldHRlci5zZXQodm0sIHRoaXMsIEdldHRlclNldHRlcjo6Y3JlYXRlKHZt
LCB0aGlzKSk7Ci0gICAgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLT5zZXRHZXR0ZXIodm0sIHRoaXMs
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT3BlcmF0aW9uc1NwZWNpZXNHZXR0ZXJDb2Rl
R2VuZXJhdG9yKHZtKSwgdGhpcykpOworICAgIG1fc3BlY2llc0dldHRlclNldHRlci0+c2V0R2V0
dGVyKHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9wZXJhdGlvbnNTcGVj
aWVzR2V0dGVyQ29kZUdlbmVyYXRvcih2bSkudmFsdWUoKSwgdGhpcykpOwogCiAgICAgbV90eXBl
ZEFycmF5UHJvdG8uaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNU
eXBlZEFycmF5Vmlld1Byb3RvdHlwZT4mIGluaXQpIHsKQEAgLTUxMyw3ICs1MTMsNyBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAgICAgW10gKExhenlDbGFzc1N0cnVj
dHVyZTo6SW5pdGlhbGl6ZXImIGluaXQpIHsgXAogICAgICAgICAgICAgaW5pdC5zZXRQcm90b3R5
cGUoSlMgIyMgdHlwZSAjIyBBcnJheVByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIGluaXQuZ2xv
YmFsLCBKUyAjIyB0eXBlICMjIEFycmF5UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52
bSwgaW5pdC5nbG9iYWwsIGluaXQuZ2xvYmFsLT5tX3R5cGVkQXJyYXlQcm90by5nZXQoaW5pdC5n
bG9iYWwpKSkpOyBcCiAgICAgICAgICAgICBpbml0LnNldFN0cnVjdHVyZShKUyAjIyB0eXBlICMj
IEFycmF5OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGluaXQucHJvdG90
eXBlKSk7IFwKLSAgICAgICAgICAgIGluaXQuc2V0Q29uc3RydWN0b3IoSlMgIyMgdHlwZSAjIyBB
cnJheUNvbnN0cnVjdG9yOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIEpTICMjIHR5cGUg
IyMgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFs
LCBpbml0Lmdsb2JhbC0+bV90eXBlZEFycmF5U3VwZXJDb25zdHJ1Y3Rvci5nZXQoaW5pdC5nbG9i
YWwpKSwgaW5pdC5wcm90b3R5cGUsIEFTQ0lJTGl0ZXJhbCgjdHlwZSAiQXJyYXkiKSwgdHlwZWRB
cnJheUNvbnN0cnVjdG9yQWxsb2NhdGUgIyMgdHlwZSAjIyBBcnJheUNvZGVHZW5lcmF0b3IoaW5p
dC52bSkpKTsgXAorICAgICAgICAgICAgaW5pdC5zZXRDb25zdHJ1Y3RvcihKUyAjIyB0eXBlICMj
IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgSlMgIyMgdHlw
ZSAjIyBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9i
YWwsIGluaXQuZ2xvYmFsLT5tX3R5cGVkQXJyYXlTdXBlckNvbnN0cnVjdG9yLmdldChpbml0Lmds
b2JhbCkpLCBpbml0LnByb3RvdHlwZSwgQVNDSUlMaXRlcmFsKCN0eXBlICJBcnJheSIpLCB0eXBl
ZEFycmF5Q29uc3RydWN0b3JBbGxvY2F0ZSAjIyB0eXBlICMjIEFycmF5Q29kZUdlbmVyYXRvcihp
bml0LnZtKS52YWx1ZSgpKSk7IFwKICAgICAgICAgICAgIGluaXQuZ2xvYmFsLT5wdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbihpbml0LnZtLCBpbml0LnZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnR5cGUgIyMgQXJyYXlQcml2YXRlTmFtZSgpLCBpbml0LmNvbnN0cnVjdG9yLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7IFwKICAgICAg
ICAgfSk7CiAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVX
KElOSVRfVFlQRURfQVJSQVlfTEFURVIpCkBAIC04MzcsNyArODM3LDcgQEAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAj
IyBDb25zdHJ1Y3QKICAgICBKU09iamVjdCogcmVnRXhwU3ltYm9sUmVwbGFjZSA9IGFzT2JqZWN0
KG1fcmVnRXhwUHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJlcGxh
Y2VTeW1ib2wpLmFzQ2VsbCgpKTsKICAgICBtX3JlZ0V4cFByb3RvU3ltYm9sUmVwbGFjZS5zZXQo
dm0sIHRoaXMsIHJlZ0V4cFN5bWJvbFJlcGxhY2UpOwogCi0jZGVmaW5lIENSRUFURV9QUklWQVRF
X0dMT0JBTF9GVU5DVElPTihuYW1lLCBjb2RlKSBKU0Z1bmN0aW9uKiBuYW1lICMjIFByaXZhdGVG
dW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgY29kZSAjIyBDb2RlR2VuZXJhdG9yKHZt
KSwgdGhpcyk7CisjZGVmaW5lIENSRUFURV9QUklWQVRFX0dMT0JBTF9GVU5DVElPTihuYW1lLCBj
b2RlKSBKU0Z1bmN0aW9uKiBuYW1lICMjIFByaXZhdGVGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgY29kZSAjIyBDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpLCB0aGlzKTsKICAgICBK
U0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX1BSSVZBVEVfR0xPQkFMX05BTUUoQ1JFQVRFX1BS
SVZBVEVfR0xPQkFMX0ZVTkNUSU9OKQogI3VuZGVmIENSRUFURV9QUklWQVRFX0dMT0JBTF9GVU5D
VElPTgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXgg
MjUyNTkxM2RmMzczMzFmNTdhN2I1MjVjNmYwMTIwODA1YTdlZmNkMi4uYmU2ZGM5OTMxN2U5NTll
MjM5MmFlNzBiODE3Y2E4NDA2NTg0M2YyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcApAQCAtMjAzNCwxMiArMjAzNCwxNSBAQCBib29sIEpTT2JqZWN0Ojpn
ZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiBleGVjLCBkb3VibGUmIG51bWJlciwgSlNWYWx1
ZSYgcmVzdQogICAgIHJldHVybiAhcmVzdWx0LmlzU3RyaW5nKCk7CiB9CiAKLWJvb2wgSlNPYmpl
Y3Q6OmdldE93blN0YXRpY1Byb3BlcnR5U2xvdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNPYmplY3Q6OmdldE93blN0YXRpY1By
b3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBmb3IgKGF1dG8qIGluZm8gPSBj
bGFzc0luZm8odm0pOyBpbmZvOyBpbmZvID0gaW5mby0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAg
aWYgKGF1dG8qIHRhYmxlID0gaW5mby0+c3RhdGljUHJvcEhhc2hUYWJsZSkgewotICAgICAgICAg
ICAgaWYgKGdldFN0YXRpY1Byb3BlcnR5U2xvdEZyb21UYWJsZSh2bSwgdGFibGUtPmNsYXNzRm9y
VGhpcywgKnRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQorICAgICAgICAgICAgaWYg
KGdldFN0YXRpY1Byb3BlcnR5U2xvdEZyb21UYWJsZShleGVjLCB0YWJsZS0+Y2xhc3NGb3JUaGlz
LCAqdGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7
CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjMyNSw2ICsyMzI4LDcg
QEAgdm9pZCBKU09iamVjdDo6cmVpZnlBbGxTdGF0aWNQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICBBU1NFUlQoIXN0YXRpY1Byb3BlcnRpZXNSZWlmaWVkKCkpOwogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCiAgICAgLy8gSWYgdGhpcyBvYmplY3QncyBDbGFzc0luZm8gaGFzIG5vIHN0YXRpYyBwcm9w
ZXJ0aWVzLCB0aGVuIG5vdGhpbmcgdG8gcmVpZnkhCiAgICAgLy8gV2UgY2FuIHNhZmVseSBzZXQg
dGhlIGZsYWcgdG8gYXZvaWQgdGhlIGV4cGVuc2l2ZSBjaGVjayBhZ2FpbiBpbiB0aGUgZnV0dXJl
LgpAQCAtMjM0NSw4ICsyMzQ5LDEwIEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5QWxsU3RhdGljUHJv
cGVydGllcyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVz
OwogICAgICAgICAgICAgYXV0byBrZXkgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgdmFs
dWUubV9rZXkpOwogICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gZ2V0RGlyZWN0
T2Zmc2V0KHZtLCBrZXksIGF0dHJpYnV0ZXMpOwotICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zm
c2V0KG9mZnNldCkpCi0gICAgICAgICAgICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgaGFz
aFRhYmxlLT5jbGFzc0ZvclRoaXMsIGtleSwgdmFsdWUsICp0aGlzKTsKKyAgICAgICAgICAgIGlm
ICghaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7CisgICAgICAgICAgICAgICAgcmVpZnlTdGF0aWNQ
cm9wZXJ0eSh2bSwgZXhlYywgaGFzaFRhYmxlLT5jbGFzc0ZvclRoaXMsIGtleSwgdmFsdWUsICp0
aGlzKTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA2YzY1OThlMzVlOTA0YjA3MjJhMzY3N2IwOGJmNzJh
ODFmYmMyOTgwLi42NGRlZmM1YzE1Y2FjMzFiNjFhMDQ0ZjVkMTA0NzFkM2NkMzYwYzA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTk0LDcgKzk0LDcgQEAg
Y2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBmcmllbmQgY2xhc3MgSlNDZWxs
OwogICAgIGZyaWVuZCBjbGFzcyBKU0ZpbmFsT2JqZWN0OwogICAgIGZyaWVuZCBjbGFzcyBNYXJr
ZWRCbG9jazsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBmcmllbmQgYm9vbCBzZXRVcFN0YXRpY0Z1
bmN0aW9uU2xvdChWTSYsIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiwgSlNPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGZyaWVuZCBib29s
IHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0IEhhc2hUYWJsZVZhbHVl
KiwgSlNPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCiAgICAgZW51bSBQ
dXRNb2RlIHsKICAgICAgICAgUHV0TW9kZVB1dCwKQEAgLTEwMjcsMTEgKzEwMjcsMTEgQEAgcHJp
dmF0ZToKICAgICBKU19FWFBPUlRfUFJJVkFURSBORVZFUl9JTkxJTkUgYm9vbCBwdXRJbmxpbmVT
bG93KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CiAKICAgICBib29sIGdldE5vbkluZGV4UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgYm9vbCBnZXRPd25Ob25JbmRleFByb3BlcnR5U2xv
dChWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgYm9v
bCBnZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmls
bEdldHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNsb3QmLCBKU0NlbGwqLCB1bnNpZ25lZCwgUHJv
cGVydHlPZmZzZXQpOwogICAgIHZvaWQgZmlsbEN1c3RvbUdldHRlclByb3BlcnR5U2xvdChWTSYs
IFByb3BlcnR5U2xvdCYsIEN1c3RvbUdldHRlclNldHRlciosIHVuc2lnbmVkLCBTdHJ1Y3R1cmUq
KTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0T3duU3RhdGljUHJvcGVydHlTbG90
KFZNJiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBib29sIGdldE93blN0YXRpY1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwogICAgIHN0cnVjdCBQcm9wZXJ0eUhhc2hFbnRyeSB7CiAgICAgICAg
IGNvbnN0IEhhc2hUYWJsZSogdGFibGU7CiAgICAgICAgIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiB2
YWx1ZTsKQEAgLTEzNDMsMTQgKzEzNDMsMTUgQEAgaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6Omdl
dFByb3RvdHlwZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIAogLy8gSXQgaXMgc2FmZSB0byBj
YWxsIHRoaXMgbWV0aG9kIHdpdGggYSBQcm9wZXJ0eU5hbWUgdGhhdCBpcyBhY3R1YWxseSBhbiBp
bmRleCwKIC8vIGJ1dCBpZiBzbyB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgKGRvZXNuJ3Qgc2Vh
cmNoIGluZGV4IHN0b3JhZ2UpLgotQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRPd25O
b25JbmRleFByb3BlcnR5U2xvdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitBTFdBWVNfSU5MSU5FIGJv
b2wgSlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIHVuc2lnbmVkIGF0
dHJpYnV0ZXM7CiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQodm0s
IHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNl
dCkpIHsKICAgICAgICAgaWYgKCFUeXBlSW5mbzo6aGFzU3RhdGljUHJvcGVydHlUYWJsZShpbmxp
bmVUeXBlRmxhZ3MoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVy
biBnZXRPd25TdGF0aWNQcm9wZXJ0eVNsb3Qodm0sIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAg
ICAgIHJldHVybiBnZXRPd25TdGF0aWNQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KTsKICAgICB9CiAgICAgCiAgICAgLy8gZ2V0UHJvcGVydHlTbG90IHJlbGllcyBvbiB0aGlz
IG1ldGhvZCBuZXZlciByZXR1cm5pbmcgaW5kZXggcHJvcGVydGllcyEKQEAgLTE0MDAsMTkgKzE0
MDEsMjIgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpTT2JqZWN0OjpmaWxsQ3VzdG9tR2V0dGVyUHJv
cGVydHlTbG90KFZNJiB2bSwgUHJvcGVydHlTbG90JgogQUxXQVlTX0lOTElORSBib29sIEpTT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvYmplY3QtPnN0cnVjdHVyZSh2bSk7
Ci0gICAgaWYgKG9iamVjdC0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3Qodm0sIHN0cnVjdHVy
ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICBpZiAob2JqZWN0LT5nZXRPd25Ob25JbmRleFBy
b3BlcnR5U2xvdChleGVjLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAg
IHJldHVybiB0cnVlOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAg
ICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5
TmFtZSkpCiAgICAgICAgIHJldHVybiBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwg
ZXhlYywgaW5kZXgudmFsdWUoKSwgc2xvdCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiAvLyBJ
dCBtYXkgc2VlbSBjcmF6eSB0byBpbmxpbmUgYSBmdW5jdGlvbiB0aGlzIGxhcmdlIGJ1dCBpdCBt
YWtlcyBhIGJpZyBkaWZmZXJlbmNlCi0vLyBzaW5jZSB0aGlzIGlzIGZ1bmN0aW9uIHZlcnkgaG90
IGluIHZhcmlhYmxlIGxvb2t1cAorLy8gc2luY2UgdGhpcyBmdW5jdGlvbiBpcyB2ZXJ5IGhvdCBp
biB2YXJpYWJsZSBsb29rdXAKIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8mIHN0cnVjdHVyZUlEVGFibGUg
PSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gdGhp
czsKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtMTQyOSw4ICsxNDMzLDkgQEAgQUxXQVlTX0lOTElO
RSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGUKICAgICAgICAgfQogICAgICAgICBBU1NFUlQob2JqZWN0LT50eXBlKCkgIT0g
UHJveHlPYmplY3RUeXBlKTsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1
cmVJRFRhYmxlLmdldChvYmplY3QtPnN0cnVjdHVyZUlEKCkpOwotICAgICAgICBpZiAob2JqZWN0
LT5nZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdCh2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpKQorICAgICAgICBpZiAob2JqZWN0LT5nZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdChl
eGVjLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAg
ICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IGxvb2sgbGlrZSBpdCdzIGZvbGxvd2luZyB0aGUgc3Bl
Y2lmaWNhdGlvbjoKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3MjU3MgogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHN0cnVjdHVyZS0+c3Rv
cmVkUHJvdG90eXBlKG9iamVjdCk7CkBAIC0xNjMxLDcgKzE2MzYsNyBAQCBKU19FWFBPUlRfUFJJ
VkFURSBORVZFUl9JTkxJTkUgYm9vbCBvcmRpbmFyeVNldFNsb3coRXhlY1N0YXRlKiwgSlNPYmpl
Y3QqLCBQcm9wZQogCiAjZGVmaW5lIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJ
VElPTihqc05hbWUsIGdlbmVyYXRvck5hbWUsIGF0dHJpYnV0ZXMpIFwKICAgICBwdXREaXJlY3RC
dWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihcCi0gICAgICAgIHZtLCBnbG9iYWxPYmpl
Y3QsIG1ha2VJZGVudGlmaWVyKHZtLCAoanNOYW1lKSksIChnZW5lcmF0b3JOYW1lKSh2bSksIChh
dHRyaWJ1dGVzKSkKKyAgICAgICAgdm0sIGdsb2JhbE9iamVjdCwgbWFrZUlkZW50aWZpZXIodm0s
IChqc05hbWUpKSwgKGdlbmVyYXRvck5hbWUpKHZtKS52YWx1ZSgpLCAoYXR0cmlidXRlcykpCiAK
IC8vIEhlbHBlciBmb3IgZGVmaW5pbmcgbmF0aXZlIGdldHRlcnMgb24gcHJvcGVydGllcy4KICNk
ZWZpbmUgSlNDX05BVElWRV9JTlRSSU5TSUNfR0VUVEVSKGpzTmFtZSwgY3BwTmFtZSwgYXR0cmli
dXRlcywgaW50cmluc2ljKSAgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdElubGluZXMuaAppbmRleCA4OTJlMmNhNDVmOTdkZDZmMzJhNmEwZTY4YTE5MmUyNmVl
NTMxODBiLi5iNGI1NzBlYmNiNDI4MTliNzNkNjllZWViMGU4ZWMyMWVhODQ4YTFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaApAQCAtMTQw
LDggKzE0MCw5IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0Tm9uSW5kZXhQcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiAgICAgd2hpbGUgKHRydWUpIHsK
ICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVJRFRhYmxlLmdldChvYmpl
Y3QtPnN0cnVjdHVyZUlEKCkpOwogICAgICAgICBpZiAoTElLRUxZKCFUeXBlSW5mbzo6b3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90KG9iamVjdC0+aW5saW5lVHlwZUZsYWdzKCkpKSkgewotICAg
ICAgICAgICAgaWYgKG9iamVjdC0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3Qodm0sIHN0cnVj
dHVyZSwgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICAgICAgICAgIGlmIChvYmplY3QtPmdldE93
bk5vbkluZGV4UHJvcGVydHlTbG90KGV4ZWMsIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzbG90
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGJv
b2wgaGFzU2xvdCA9IHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmdldE93blBy
b3BlcnR5U2xvdChvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3Bw
CmluZGV4IDc1YjBjMTFmMzZlMjZhN2JhNDkzNDE1ODU1MjYzOGI4MWUxNWYxZTIuLjg3ZmRhM2Fm
OGQ5MzAzN2VhY2QyZGEyNjg3ZWEyNTA0MDc5NjZkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3Bw
CkBAIC0zMzAsNyArMzMwLDcgQEAgdm9pZCBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICB0b1N0cmlu
Z1RhZ0FjY2Vzc29yLT5zZXRHZXR0ZXIodm0sIGdsb2JhbE9iamVjdCwgdG9TdHJpbmdUYWdGdW5j
dGlvbik7CiAgICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nvcih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+dG9TdHJpbmdUYWdTeW1ib2wsIHRvU3RyaW5nVGFnQWNjZXNzb3IsIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0
cmlidXRlOjpBY2Nlc3Nvcik7CiAKLSAgICBKU0Z1bmN0aW9uKiB2YWx1ZXNGdW5jdGlvbiA9IEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgdHlwZWRBcnJheVByb3RvdHlwZVZhbHVlc0NvZGVHZW5lcmF0
b3Iodm0pLCBnbG9iYWxPYmplY3QpOworICAgIEpTRnVuY3Rpb24qIHZhbHVlc0Z1bmN0aW9uID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0eXBlZEFycmF5UHJvdG90eXBlVmFsdWVzQ29kZUdlbmVy
YXRvcih2bSkudmFsdWUoKSwgZ2xvYmFsT2JqZWN0KTsKIAogICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJs
aWNOYW1lKCksIHZhbHVlc0Z1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCB2YWx1ZXNGdW5jdGlvbiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKaW5kZXggOTY2YzcxZWIxMGE4YTg0ODQ3ZTg3
Y2I2MTIzZTQwODc1MTc4YmYwNi4uOGVhYzBmOTRjNTc2MTQ4MWEwN2YzMGIyYjJhNTVjNmM0ODk1
NzJlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCkBAIC0zMyw3
ICszMyw3IEBAIHZvaWQgcmVpZnlTdGF0aWNBY2Nlc3NvcihWTSYgdm0sIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlJiB2YWx1ZSwgSlNPYmplY3QmIHRoaXNPYmplCiAgICAgaWYgKHZhbHVlLmFjY2Vzc29y
R2V0dGVyKCkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBudWxscHRyOwogICAg
ICAgICBpZiAodmFsdWUuYXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkJ1aWx0aW4p
Ci0gICAgICAgICAgICBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdmFsdWUuYnVp
bHRpbkFjY2Vzc29yR2V0dGVyR2VuZXJhdG9yKCkodm0pLCBnbG9iYWxPYmplY3QpOworICAgICAg
ICAgICAgZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHZhbHVlLmJ1aWx0aW5BY2Nl
c3NvckdldHRlckdlbmVyYXRvcigpKHZtKS52YWx1ZSgpLCBnbG9iYWxPYmplY3QpOwogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIFN0cmluZyBnZXR0ZXJOYW1lID0gdHJ5TWFrZVN0cmluZyhB
U0NJSUxpdGVyYWwoImdldCAiKSwgU3RyaW5nKCpwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSk7
CiAgICAgICAgICAgICBpZiAoIWdldHRlck5hbWUpCkBAIC00NSw4ICs0NSwxMCBAQCB2b2lkIHJl
aWZ5U3RhdGljQWNjZXNzb3IoVk0mIHZtLCBjb25zdCBIYXNoVGFibGVWYWx1ZSYgdmFsdWUsIEpT
T2JqZWN0JiB0aGlzT2JqZQogICAgIHRoaXNPYmplY3QucHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nv
cih2bSwgcHJvcGVydHlOYW1lLCBhY2Nlc3NvciwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1
ZS5hdHRyaWJ1dGVzKCkpKTsKIH0KIAotYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChWTSYg
dm0sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBjb25zdCBIYXNoVGFibGVWYWx1ZSogZW50
cnksIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBl
bnRyeSwgSlNPYmplY3QqIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBBU1NFUlQodGhpc09iamVjdC0+
Z2xvYmFsT2JqZWN0KCkpOwogICAgIEFTU0VSVChlbnRyeS0+YXR0cmlidXRlcygpICYgUHJvcGVy
dHlBdHRyaWJ1dGU6OkJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5KTsK
ICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwpAQCAtNTksNyArNjEsOCBAQCBib29sIHNldFVwU3Rh
dGljRnVuY3Rpb25TbG90KFZNJiB2bSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGNvbnN0
IEhhc2hUYWJsZQogICAgICAgICBpZiAodGhpc09iamVjdC0+c3RhdGljUHJvcGVydGllc1JlaWZp
ZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZWlmeVN0YXRpY1By
b3BlcnR5KHZtLCBjbGFzc0luZm8sIHByb3BlcnR5TmFtZSwgKmVudHJ5LCAqdGhpc09iamVjdCk7
CisgICAgICAgIHJlaWZ5U3RhdGljUHJvcGVydHkodm0sIGV4ZWMsIGNsYXNzSW5mbywgcHJvcGVy
dHlOYW1lLCAqZW50cnksICp0aGlzT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwogCiAgICAgICAgIG9mZnNldCA9IHRoaXNPYmplY3QtPmdldERpcmVj
dE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgaWYgKCFpc1Zh
bGlkT2Zmc2V0KG9mZnNldCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xvb2t1cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgK
aW5kZXggYmZlZTUxZTBiMWFjYjQ0NmEzNTA4MmI0NWJmMDFlOTM4YTY4OGFmNy4uNjZlN2ExMWY3
YzI2NWVlMjJiOGIzODg4NWY1N2Q2MTJiZDY0NzBlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTG9va3VwLmgKQEAgLTMxLDEwICszMSwxMiBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkxhenlQcm9wZXJ0eS5o
IgorI2luY2x1ZGUgIlBhcnNlckVycm9yLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCiAj
aW5jbHVkZSAiUHV0UHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiVHlwZUVycm9yLmgiCiAjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKQEAgLTQ3LDcgKzQ5LDcgQEAgc3RydWN0IENvbXBhY3RIYXNoSW5kZXgg
ewogLy8gaWUuIHR5cGVkZWYgSlNWYWx1ZSAoKkdldEZ1bmN0aW9uKShFeGVjU3RhdGUqLCBKU09i
amVjdCogYmFzZU9iamVjdCkKIHR5cGVkZWYgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgR2V0
RnVuY3Rpb247CiB0eXBlZGVmIFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jIFB1dEZ1bmN0
aW9uOwotdHlwZWRlZiBGdW5jdGlvbkV4ZWN1dGFibGUqICgqQnVpbHRpbkdlbmVyYXRvcikoVk0m
KTsKK3R5cGVkZWYgRXhwZWN0ZWQ8RnVuY3Rpb25FeGVjdXRhYmxlKiwgUGFyc2VyRXJyb3I+ICgq
QnVpbHRpbkdlbmVyYXRvcikoVk0mKTsKIHR5cGVkZWYgSlNWYWx1ZSAoKkxhenlQcm9wZXJ0eUNh
bGxiYWNrKShWTSYsIEpTT2JqZWN0Kik7CiAKIC8vIEhhc2ggdGFibGUgZ2VuZXJhdGVkIGJ5IHRo
ZSBjcmVhdGVfaGFzaF90YWJsZSBzY3JpcHQuCkBAIC0yMDMsNyArMjA1LDcgQEAgc3RydWN0IEhh
c2hUYWJsZSB7CiAgICAgfQogfTsKIAotSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBzZXRVcFN0YXRp
Y0Z1bmN0aW9uU2xvdChWTSYsIGNvbnN0IENsYXNzSW5mbyosIGNvbnN0IEhhc2hUYWJsZVZhbHVl
KiwgSlNPYmplY3QqIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CitK
U19FWFBPUlRfUFJJVkFURSBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSos
IGNvbnN0IENsYXNzSW5mbyosIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiwgSlNPYmplY3QqIHRoaXNP
YmplY3QsIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIHJlaWZ5U3RhdGljQWNjZXNzb3IoVk0mLCBjb25zdCBIYXNoVGFibGVWYWx1ZSYsIEpTT2Jq
ZWN0JiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUpOwogCiBpbmxpbmUgQnVpbHRpbkdlbmVyYXRv
ciBIYXNoVGFibGVWYWx1ZTo6YnVpbHRpbkFjY2Vzc29yR2V0dGVyR2VuZXJhdG9yKCkgY29uc3QK
QEAgLTIyMCw3ICsyMjIsNyBAQCBpbmxpbmUgQnVpbHRpbkdlbmVyYXRvciBIYXNoVGFibGVWYWx1
ZTo6YnVpbHRpbkFjY2Vzc29yU2V0dGVyR2VuZXJhdG9yKCkgY29uc3QKICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxCdWlsdGluR2VuZXJhdG9yPihtX3ZhbHVlcy52YWx1ZTIpOwogfQogCi1p
bmxpbmUgYm9vbCBnZXRTdGF0aWNQcm9wZXJ0eVNsb3RGcm9tVGFibGUoVk0mIHZtLCBjb25zdCBD
bGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgSGFzaFRhYmxlJiB0YWJsZSwgSlNPYmplY3QqIHRo
aXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
K2lubGluZSBib29sIGdldFN0YXRpY1Byb3BlcnR5U2xvdEZyb21UYWJsZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBjb25zdCBIYXNoVGFibGUmIHRhYmxlLCBK
U09iamVjdCogdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIGlmICh0aGlzT2JqZWN0LT5zdGF0aWNQcm9wZXJ0aWVzUmVpZmll
ZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzAsNyArMjMyLDcgQEAgaW5saW5lIGJv
b2wgZ2V0U3RhdGljUHJvcGVydHlTbG90RnJvbVRhYmxlKFZNJiB2bSwgY29uc3QgQ2xhc3NJbmZv
KiBjbGFzc0luZm8sIGMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGVudHJ5LT5h
dHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbk9yRnVuY3Rpb25PckFjY2Vz
c29yT3JMYXp5UHJvcGVydHkpCi0gICAgICAgIHJldHVybiBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xv
dCh2bSwgY2xhc3NJbmZvLCBlbnRyeSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsK
KyAgICAgICAgcmV0dXJuIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KGV4ZWMsIGNsYXNzSW5mbywg
ZW50cnksIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICBpZiAoZW50cnkt
PmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIpIHsKICAg
ICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKGVu
dHJ5LT5hdHRyaWJ1dGVzKCkpLCBqc051bWJlcihlbnRyeS0+Y29uc3RhbnRJbnRlZ2VyKCkpKTsK
QEAgLTMxOSwxMyArMzIxLDI0IEBAIGlubGluZSBib29sIGxvb2t1cFB1dChFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBiYXNlCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWlubGluZSB2b2lkIHJlaWZ5U3RhdGljUHJvcGVydHkoVk0mIHZtLCBjb25z
dCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUs
IGNvbnN0IEhhc2hUYWJsZVZhbHVlJiB2YWx1ZSwgSlNPYmplY3QmIHRoaXNPYmopCitpbmxpbmUg
dm9pZCByZWlmeVN0YXRpY1Byb3BlcnR5KFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjSWZBdmFpbGFi
bGUsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3Bl
cnR5TmFtZSwgY29uc3QgSGFzaFRhYmxlVmFsdWUmIHZhbHVlLCBKU09iamVjdCYgdGhpc09iaikK
IHsKKyAgICBBU1NFUlQoZXhlY0lmQXZhaWxhYmxlID09IG51bGxwdHIgfHwgJnZtID09ICYoZXhl
Y0lmQXZhaWxhYmxlLT52bSgpKSk7CisKICAgICBpZiAodmFsdWUuYXR0cmlidXRlcygpICYgUHJv
cGVydHlBdHRyaWJ1dGU6OkJ1aWx0aW4pIHsKICAgICAgICAgaWYgKHZhbHVlLmF0dHJpYnV0ZXMo
KSAmIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvcikKICAgICAgICAgICAgIHJlaWZ5U3RhdGlj
QWNjZXNzb3Iodm0sIHZhbHVlLCB0aGlzT2JqLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB0aGlzT2JqLnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2bSwgdGhpc09i
ai5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCB2YWx1ZS5idWlsdGluR2VuZXJhdG9yKCko
dm0pLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHZhbHVlLmF0dHJpYnV0ZXMoKSkpOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIEV4cGVjdGVkPEZ1bmN0aW9uRXhlY3V0YWJsZSosIFBhcnNl
ckVycm9yPiBmID0gdmFsdWUuYnVpbHRpbkdlbmVyYXRvcigpKHZtKTsKKyAgICAgICAgICAgIGlm
IChmLmhhc192YWx1ZSgpKQorICAgICAgICAgICAgICAgIHRoaXNPYmoucHV0RGlyZWN0QnVpbHRp
bkZ1bmN0aW9uKHZtLCB0aGlzT2JqLmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGYudmFs
dWUoKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1dGVzKCkpKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGV4ZWNJZkF2YWlsYWJsZSkKKyAgICAgICAgICAgICAgICBmLmVycm9y
KCkudGhyb3dTdGFja092ZXJmbG93T3JPdXRPZk1lbW9yeShleGVjSWZBdmFpbGFibGUpOworICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJGYXRhbCBwYXJzZXIg
ZXJyb3IgKHByb2JhYmx5IGEgc3RhY2sgb3ZlcmZsb3cpLCBhbmQgbm8gRXhlY1N0YXRlIGF2YWls
YWJsZSBmb3IgdGhyb3dpbmcgYSBKUyBleGNlcHRpb24iKTsKKyAgICAgICAgICAgICAgICBDUkFT
SCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTQwMCw3ICs0MTMsNyBAQCBpbmxpbmUgdm9pZCByZWlmeVN0YXRpY1Byb3BlcnRpZXMoVk0m
IHZtLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgSGFzaAogICAgICAgICBpZiAo
IXZhbHVlLm1fa2V5KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGF1dG8ga2V5ID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
Pih2YWx1ZS5tX2tleSksIHN0cmxlbih2YWx1ZS5tX2tleSkpOwotICAgICAgICByZWlmeVN0YXRp
Y1Byb3BlcnR5KHZtLCBjbGFzc0luZm8sIGtleSwgdmFsdWUsIHRoaXNPYmopOworICAgICAgICBy
ZWlmeVN0YXRpY1Byb3BlcnR5KHZtLCBudWxscHRyLCBjbGFzc0luZm8sIGtleSwgdmFsdWUsIHRo
aXNPYmopOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWFwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
cFByb3RvdHlwZS5jcHAKaW5kZXggNTM1NjhiN2EzYWFlNGIxMjZjY2UzMzlkMzJkMDQ3MGVlYTc2
YTE4My4uZmUyYjZiZWUxMzIwY2IyNTU3YTdkZTUzMmZmZDk4MDRkYjMyNWRhYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCkBAIC03MSw3ICs3
MSw3IEBAIHZvaWQgTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldFBy
aXZhdGVOYW1lKCksIG1hcFByb3RvRnVuY0dldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIDEsIEpTTWFwR2V0SW50cmluc2ljKTsKICAgICBKU0Nf
TkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuc2V0UHJpdmF0ZU5hbWUoKSwgbWFwUHJvdG9GdW5jU2V0LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMiwgSlNN
YXBTZXRJbnRyaW5zaWMpOwogCi0gICAgSlNGdW5jdGlvbiogZW50cmllcyA9IEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgbWFwUHJvdG90eXBlRW50cmllc0NvZGVHZW5lcmF0b3Iodm0pLCBnbG9iYWxP
YmplY3QpOworICAgIEpTRnVuY3Rpb24qIGVudHJpZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IG1hcFByb3RvdHlwZUVudHJpZXNDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpLCBnbG9iYWxPYmpl
Y3QpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpLCBlbnRyaWVzLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBl
bnRyaWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PnRvU3RyaW5nVGFnU3ltYm9sLCBqc1N0cmluZygmdm0sICJNYXAiKSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCmluZGV4IDI5MzQzOTYwODdl
NjhiZjM4YzkxODczMTgwNGY2ZjZlNzBiMDdkNmMuLmYyZjA1ZTNmZjBmZTRjM2FiOWYyY2I2YmUw
NTI5YTQ0MGMyZmQ4NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0
UHJvdG90eXBlLmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFNldFByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19O
QVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5oYXNQcml2YXRlTmFtZSgpLCBzZXRQcm90b0Z1bmNIYXMsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxLCBKU1Nl
dEhhc0ludHJpbnNpYyk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFkZFByaXZhdGVO
YW1lKCksIHNldFByb3RvRnVuY0FkZCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIDEsIEpTU2V0QWRkSW50cmluc2ljKTsKIAotICAgIEpTRnVuY3Rp
b24qIHZhbHVlcyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgc2V0UHJvdG90eXBlVmFsdWVzQ29k
ZUdlbmVyYXRvcih2bSksIGdsb2JhbE9iamVjdCk7CisgICAgSlNGdW5jdGlvbiogdmFsdWVzID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBzZXRQcm90b3R5cGVWYWx1ZXNDb2RlR2VuZXJhdG9yKHZt
KS52YWx1ZSgpLCBnbG9iYWxPYmplY3QpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCks
IHZhbHVlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5rZXlzUHVibGljTmFtZSgpLCB2YWx1ZXMsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIHZhbHVl
cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IDc3ZjYwMzk1
Y2Y2YTk0MjZjMTY2MGJlMGViODAxZWY2NmNhYzc0YmUuLjM2ZGJkNGYyNmM0MGRiZGMxMGQ3ZTM5
MTRmZWIwN2I5MjQzNWIyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xs
YXJWTS5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJKU0RvbGxhclZNLmgiCiAKLSNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuaCIK
KyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
ICNpbmNsdWRlICJET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJET01KSVRH
ZXR0ZXJTZXR0ZXIuaCIKQEAgLTE1MjIsOSArMTUyMiw4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlQnVpbHRpbihFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UgPSBtYWtlU291cmNlKGZ1bmN0aW9uVGV4dCwgeyB9KTsK
LSAgICBKU0Z1bmN0aW9uKiBmdW5jID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjcmVhdGVCdWls
dGluRXhlY3V0YWJsZSh2bSwgc291cmNlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImZv
byIpLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0
cnVjdCktPmxpbmsodm0sIHNvdXJjZSksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0K
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZ1bmMpOworICAgIGF1dG8gdW5saW5rZWQgPSBC
dWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGVPckNyYXNoKHZtLCBzb3VyY2UsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiZm9vIiksIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdW5saW5rZWQtPmxpbmsodm0sIHNvdXJjZSks
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVJvb3QoRXhlY1N0YXRlKiBleGVjKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZh
dGVDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJs
ZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwCmluZGV4IGNhOTdlOTYxMWQwMzIyYjY1MmRj
Y2U0ZjZlZjk4ZTQ4YTJkNzMzNmQuLjE0YzJiY2RlNjkyNTdiYWMyNDE2ZGJlN2EzYzNhZDZiZDNi
ZGJiMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVT
dHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKQEAgLTEyNCwyNyAr
MTI0LDI3IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTQnVpbHRpblJlYWRhYmxlU3Ry
ZWFtQllPQlJlcXVlc3RQcml2YXRlQ29uc3RydWN0b3I6CiAKIHRlbXBsYXRlPD4gRnVuY3Rpb25F
eGVjdXRhYmxlKiBKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXJQcml2YXRlQ29u
c3RydWN0b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKEpTQzo6Vk0mIHZtKQogewotICAgIHJldHVy
biByZWFkYWJsZVN0cmVhbUludGVybmFsc1ByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1E
ZWZhdWx0UmVhZGVyQ29kZUdlbmVyYXRvcih2bSk7CisgICAgcmV0dXJuIHJlYWRhYmxlU3RyZWFt
SW50ZXJuYWxzUHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXJDb2Rl
R2VuZXJhdG9yKHZtKS52YWx1ZSgpOwogfQogCiB0ZW1wbGF0ZTw+IEZ1bmN0aW9uRXhlY3V0YWJs
ZSogSlNCdWlsdGluUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlclByaXZhdGVDb25zdHJ1
Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUoSlNDOjpWTSYgdm0pCiB7Ci0gICAgcmV0dXJuIHJl
YWRhYmxlU3RyZWFtSW50ZXJuYWxzUHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZVN0cmVhbURlZmF1
bHRDb250cm9sbGVyQ29kZUdlbmVyYXRvcih2bSk7CisgICAgcmV0dXJuIHJlYWRhYmxlU3RyZWFt
SW50ZXJuYWxzUHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVy
Q29kZUdlbmVyYXRvcih2bSkudmFsdWUoKTsKIH0KIAogdGVtcGxhdGU8PiBGdW5jdGlvbkV4ZWN1
dGFibGUqIEpTQnVpbHRpblJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXJQcml2YXRlQ29uc3Ry
dWN0b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKEpTQzo6Vk0mIHZtKQogewotICAgIHJldHVybiBy
ZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNQcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxlQnl0ZVN0
cmVhbUNvbnRyb2xsZXJDb2RlR2VuZXJhdG9yKHZtKTsKKyAgICByZXR1cm4gcmVhZGFibGVCeXRl
U3RyZWFtSW50ZXJuYWxzUHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9s
bGVyQ29kZUdlbmVyYXRvcih2bSkudmFsdWUoKTsKIH0KIAogdGVtcGxhdGU8PiBGdW5jdGlvbkV4
ZWN1dGFibGUqIEpTQnVpbHRpblJlYWRhYmxlU3RyZWFtQllPQlJlYWRlclByaXZhdGVDb25zdHJ1
Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUoSlNDOjpWTSYgdm0pCiB7Ci0gICAgcmV0dXJuIHJl
YWRhYmxlQnl0ZVN0cmVhbUludGVybmFsc1ByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1C
WU9CUmVhZGVyQ29kZUdlbmVyYXRvcih2bSk7CisgICAgcmV0dXJuIHJlYWRhYmxlQnl0ZVN0cmVh
bUludGVybmFsc1ByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyQ29kZUdl
bmVyYXRvcih2bSkudmFsdWUoKTsKIH0KIAogdGVtcGxhdGU8PiBGdW5jdGlvbkV4ZWN1dGFibGUq
IEpTQnVpbHRpblJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3RQcml2YXRlQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVFeGVjdXRhYmxlKEpTQzo6Vk0mIHZtKQogewotICAgIHJldHVybiByZWFkYWJsZUJ5
dGVTdHJlYW1JbnRlcm5hbHNQcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtQllPQlJlcXVl
c3RDb2RlR2VuZXJhdG9yKHZtKTsKKyAgICByZXR1cm4gcmVhZGFibGVCeXRlU3RyZWFtSW50ZXJu
YWxzUHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0Q29kZUdlbmVyYXRv
cih2bSkudmFsdWUoKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZVJlYWRhYmxlU3RyZWFtRGVmYXVs
dFJlYWRlclByaXZhdGVDb25zdHJ1Y3RvcihWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCmluZGV4IGM0ZjUxMjhkMTA4ZmM3NGI4ZmI0NTFlYmNjZTNlODgzZWFkMmY3
ZDEuLjYzYjA1OTNjYjM4M2FlYTY1Mzk0Y2U5YThhM2UyY2VkYWRmNjEwZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC03
MTczLDcgKzcxNzMsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAg
ICBpZiAoSXNKU0J1aWx0aW5Db25zdHJ1Y3RvcigkaW50ZXJmYWNlKSkgewogICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICJ0ZW1wbGF0ZTw+IEZ1bmN0aW9uRXhlY3V0YWJsZSogJHtjb25zdHJ1
Y3RvckNsYXNzTmFtZX06OmluaXRpYWxpemVFeGVjdXRhYmxlKFZNJiB2bSlcbiIpOwogICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIHJldHVybiAiIC4gR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lRnJvbVN0cmluZygkaW50
ZXJmYWNlLT50eXBlLT5uYW1lLCAiaW5pdGlhbGl6ZSIgLiAkaW50ZXJmYWNlLT50eXBlLT5uYW1l
KSAuICIodm0pO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4g
IiAuIEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFtZUZyb21TdHJpbmcoJGludGVyZmFjZS0+dHlwZS0+
bmFtZSwgImluaXRpYWxpemUiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSkgLiAiKHZtKS52YWx1
ZSgpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cbiIpOwogICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICJcbiIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCmluZGV4IDFhYzZlYWI2NDllZjIy
MDc3NjRiMmMyNGQ4NzU5YzJlM2YyYjQzOGYuLmUwYjE2MDhiZDA1NDYyNjIxYmViNTQwNjVhYzY0
MDVmN2NkYjlkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtODIsNyArODIsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVBy
b3BlcgogCiB0ZW1wbGF0ZTw+IEZ1bmN0aW9uRXhlY3V0YWJsZSogSlNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUoVk0mIHZt
KQogewotICAgIHJldHVybiB0ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JJbml0aWFs
aXplVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29kZUdlbmVyYXRvcih2bSk7Cisg
ICAgcmV0dXJuIHRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckluaXRpYWxpemVUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpOwog
fQogCiB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3Ip
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAppbmRleCBlMmFl
NWJkOGE0M2NjMWRjOTU3NGJiNjNmYTRmMzY1ZmZhMzYxNjUyLi44MjUzYmFiZjIxNThiMmMyOGY3
OWJkYWUwZjYwMGI4ZTNkYmM5YjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJgogCiB0
ZW1wbGF0ZTw+IEZ1bmN0aW9uRXhlY3V0YWJsZSogSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JD
b25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUoVk0mIHZtKQogewotICAgIHJldHVybiB0
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3JJbml0aWFsaXplVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
Q29kZUdlbmVyYXRvcih2bSk7CisgICAgcmV0dXJuIHRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcklu
aXRpYWxpemVUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgp
OwogfQogCiB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH07CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIzMTc3MjExZDhlNmI4ZDIzMGE1
NGRiZWQ3MzgwZmY4MTlhNmYyOTEuLmIwYzRlNjk0NTYzN2VmNGY3NzVjNGU4ZmJlNzYwYTdhOTdj
NzU0MzkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMDMtMzAgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlz
c2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBIHN0YWNrIG92ZXJmbG93IGluIHRoZSBwYXJzaW5n
IG9mIGEgYnVpbHRpbiAoY2FsbGVkIGJ5IGNyZWF0ZUV4ZWN1dGFibGUpIGNhdXNlIGEgY3Jhc2gg
aW5zdGVhZCBvZiBhIGNhdGNoYWJsZSBqcyBleGNlcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDA3NAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzcxNjU4OTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VpdGggTWlsbGVyLgorCisgICAg
ICAgICogc3RyZXNzL3N0YWNrLW92ZXJmbG93LXdoaWxlLXBhcnNpbmctYnVpbHRpbi5qczogQWRk
ZWQuCisgICAgICAgIChmKToKKwogMjAxOC0wMy0yOCAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNz
ZXRAYXBwbGUuY29tPgogCiAgICAgICAgIGFwcGVuZFF1b3RlZEpTT05TdHJpbmcgc3RvcHMgb24g
YXJpdGhtZXRpYyBvdmVyZmxvdyBpbnN0ZWFkIG9mIHByb3BhZ2F0aW5nIGl0IHVwd2FyZHMKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3N0YWNrLW92ZXJmbG93LXdoaWxlLXBhcnNpbmctYnVp
bHRpbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3N0YWNrLW92ZXJmbG93LXdoaWxlLXBhcnNpbmctYnVp
bHRpbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iYjk5YTE3MmY0M2ViN2U2MjY3ZDUxY2M2ZGU5MWI2NWE4Y2Y2
ZDYxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc3RhY2stb3ZlcmZsb3ctd2hp
bGUtcGFyc2luZy1idWlsdGluLmpzCkBAIC0wLDAgKzEsMTEgQEAKK2Z1bmN0aW9uIGYoKSB7Cisg
ICAgdHJ5IHsKKyAgICAgICAgZigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgIE1hcC5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKCcnLCB7fSk7CisgICAgICAg
IH0gY2F0Y2gge30KKyAgICB9Cit9CisKK2YoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338407</attachid>
            <date>2018-04-20 04:08:07 -0700</date>
            <delta_ts>2018-04-23 07:38:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184074-20180420130805.patch</filename>
            <type>text/plain</type>
            <size>114170</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwODA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YzkwM2YyMDhiOTc2ZmMzYWVjNjAyY2M1OGRlMWMxNDJiNjMyMWI5Li43ZmNmYjM2MzQ1MzI3YzMx
ZWU1NDM1YjkxMDI5MmI1ZjQ1YmEyMDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NCBAQAorMjAxOC0wNC0xOSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUu
Y29tPgorCisgICAgICAgIEEgc3RhY2sgb3ZlcmZsb3cgaW4gdGhlIHBhcnNpbmcgb2YgYSBidWls
dGluIChjYWxsZWQgYnkgY3JlYXRlRXhlY3V0YWJsZSkgY2F1c2UgYSBjcmFzaCBpbnN0ZWFkIG9m
IGEgY2F0Y2hhYmxlIGpzIGV4Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MDc0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNzE2NTg5
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZWl0aCBNaWxsZXIuCisKKyAgICAgICAgRml4aW5n
IHRoaXMgcmVxdWlyZXMgZ2V0dGluZyB0aGUgUGFyc2VyRXJyb3IgKHdpdGggaW5mb3JtYXRpb24g
YWJvdXQgdGhlIGZhaWx1cmUpIGFuZCBhbiBFeGVjU3RhdGUqICh0byB0aHJvdyBhbiBleGNlcHRp
b24pIGluIHRoZSBzYW1lIHBsYWNlLgorICAgICAgICBJdCBpcyBzdXJwcmlzaW5nbHkgcGFpbmZ1
bCwgd2l0aCBxdWl0ZSBhIGxvbmcgY2FsbCBzdGFjayBiZXR3ZWVuIHRoZSBsYXN0IGZ1bmN0aW9u
IHdpdGggYW4gYWNjZXNzIHRvIGFuIEV4ZWNTdGF0ZSogYW5kIHRoZSBmaXJzdCBmdW5jdGlvbiB3
aXRoIHRoZSBQYXJzZXJFcnJvci4KKyAgICAgICAgRXZlbiB3b3JzZSwgbWFueSBvZiB0aGVzZSBm
dW5jdGlvbnMgYXJlIGdlbmVyYXRlZCBieSBtYWNyb3MsIHRoZW1zZWx2ZXMgZ2VuZXJhdGVkIGJ5
IGEgbWF6ZSBvZiBweXRob24gc2NyaXB0cy4KKyAgICAgICAgQXMgYSByZXN1bHQsIHRoaXMgcGF0
Y2ggaXMgZ3JvdGVzcXVlbHkgbGFyZ2UsIHdoaWxlIGFsbCBpdCBkb2VzIGlzIGFkZGluZyBlbm91
Z2ggcGx1bWJpbmcgdG8gdGhyb3cgYSBwcm9wZXIgZXhjZXB0aW9uIGluIHRoaXMgc3BlY2lmaWMg
Y2FzZS4KKworICAgICAgICBUaGVyZSBhcmUgbm93IGJhcmUgY2FsbHMgdG8gJy52YWx1ZSgpJyBv
biBzZXZlcmFsIHBhdGhzIHRoYXQgbWF5IGNyYXNoLiBJdCBpcyBub3QgYSBwcm9ibGVtIGluIG15
IG9waW5pb24sIHNpbmNlIHdlIHByZXZpb3VzbHkgY3Jhc2hlZCBpbiBldmVyeSBjYXNlIHJlZ2Fy
ZGxlc3Mgb2YgdGhlIHBhdGggdGhhdCB0b29rIHVzIHRvIGNyZWF0ZUV4ZWN1dGFibGUgd2hlbiBl
bmNvdW50ZXJpbmcgYSBzdGFjayBvdmVyZmxvdy4KKyAgICAgICAgSWYgd2UgZXZlciBmaW5kIGFu
IGV4YW1wbGUgdGhhdCBjYW4gY2F1c2UgdGhlc2UgY2FsbHMgdG8gZmFpbCwgaXQgc2hvdWxkIGJl
IGRvYWJsZSB0byB0aHJvdyBhIHByb3BlciBleGNlcHRpb24gdGhlcmUgdG9vLgorCisgICAgICAg
IFR3byBvdGhlciBtaW5vciBjaGFuZ2VzOgorICAgICAgICAtIEkgcmVtb3ZlZCBCdWlsdGluRXhl
Y3V0YWJsZUNyZWF0b3Iue2NwcCwgaH0gYXMgaXQgd2FzIG5lYXJseSBlbXB0eSwgYW5kIG9ubHkg
dXNlZCBpbiBvbmUgcGxhY2UuIFRoYXQgcGxhY2Ugbm93IGluY2x1ZGVzIEJ1aWx0aW5FeGVjdXRh
Ymxlcy5oIGRpcmVjdGx5IGluc3RlYWQuCisgICAgICAgIC0gSSBtb3ZlZCBjb2RlIGZyb20gUGFy
c2VyRXJyb3IuaCBpbnRvIGEgbmV3bHkgY3JlYXRlZCBQYXJzZXJFcnJvci5jcHAsIGFzIEkgc2Vl
IG5vIG5lZWQgdG8gaW5saW5lIGZ1bmN0aW9ucyB0aGF0IGFyZSBvbmx5IHVzZWQgd2hlbiBlbmNv
dW50ZXJpbmcgYSBwYXJzZXIgZXJyb3IsIGFuZCBQYXJzZXJFcnJvci5oIGlzIG5vdyBpbmNsdWRl
ZCBpbiBxdWl0ZSBhIGZldyBwbGFjZXMuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvYnVpbHRp
bnNfZ2VuZXJhdGVfY29tYmluZWRfaGVhZGVyLnB5OgorICAgICAgICAoQnVpbHRpbnNDb21iaW5l
ZEhlYWRlckdlbmVyYXRvci5nZW5lcmF0ZV9mb3J3YXJkX2RlY2xhcmF0aW9ucyk6CisgICAgICAg
IChQYXJzZXJFcnJvcik6CisgICAgICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3QpOiBE
ZWxldGVkLgorICAgICAgICAoZ2VuZXJhdGVfZXh0ZXJuc19mb3Jfb2JqZWN0KTogRGVsZXRlZC4K
KyAgICAgICAgKGdlbmVyYXRlX21hY3Jvc19mb3Jfb2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAg
KGdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfdGFibGVfbWFjcm8pOiBEZWxldGVkLgorICAgICAg
ICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV9uYW1lX21hY3JvKTogRGVsZXRlZC4KKyAgICAg
ICAgKGdlbmVyYXRlX3NlY3Rpb25fZm9yX2dsb2JhbF9wcml2YXRlX2NvZGVfbmFtZV9tYWNybyk6
IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9z
ZXBhcmF0ZV9oZWFkZXIucHk6CisgICAgICAgIChnZW5lcmF0ZV9zZWNvbmRhcnlfaGVhZGVyX2lu
Y2x1ZGVzKToKKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5w
eToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZUNyZWF0b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlQ3JlYXRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRl
RGVmYXVsdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpj
cmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OmNyZWF0ZUJ1aWx0aW5FeGVj
dXRhYmxlKToKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRh
YmxlT3JDcmFzaCk6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhl
Y3V0YWJsZSk6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogcGFyc2Vy
L1BhcnNlckVycm9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlBhcnNlckVycm9yOjp0b0Vy
cm9yT2JqZWN0KToKKyAgICAgICAgKEpTQzo6UGFyc2VyRXJyb3I6OnRocm93U3RhY2tPdmVyZmxv
d09yT3V0T2ZNZW1vcnkpOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAg
KiBwYXJzZXIvUGFyc2VyRXJyb3IuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyRXJyb3I6OnRvRXJy
b3JPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpBc3luY0l0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
UHJvdG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6Cisg
ICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpn
ZXRPd25TdGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmVpZnlB
bGxTdGF0aWNQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6Z2V0UHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0SW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0Tm9uSW5kZXhQcm9wZXJ0eVNsb3QpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OkpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnJlaWZ5U3RhdGljQWNjZXNz
b3IpOgorICAgICAgICAoSlNDOjpzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdCk6CisgICAgICAgICog
cnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKEpTQzo6Z2V0U3RhdGljUHJvcGVydHlTbG90RnJv
bVRhYmxlKToKKyAgICAgICAgKEpTQzo6cmVpZnlTdGF0aWNQcm9wZXJ0eSk6CisgICAgICAgICog
cnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpNYXBQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1NldFByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OlNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHRvb2xz
L0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZUJ1aWx0aW4pOgor
CiAyMDE4LTA0LTE5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIEZpeCBqc2Mgc2hlbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxOWJjMjQ4Zjg0
MmY4OWM2NGU5MzZmZDgwZjY1YmQwZWY2OGM3NmNlLi5iOTFlMDdmMTdjZDAzMzY5YmIyYjVhN2Q5
ZjdmMDcxNmIwMGYzN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTgtMDQtMTkg
IFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBIHN0YWNr
IG92ZXJmbG93IGluIHRoZSBwYXJzaW5nIG9mIGEgYnVpbHRpbiAoY2FsbGVkIGJ5IGNyZWF0ZUV4
ZWN1dGFibGUpIGNhdXNlIGEgY3Jhc2ggaW5zdGVhZCBvZiBhIGNhdGNoYWJsZSBqcyBleGNlcHRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDA3
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzcxNjU4OTc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgS2VpdGggTWlsbGVyLgorCisgICAgICAgIEkgaGFkIHRvIHNsaWdodGx5IGNoYW5nZSB0aGUg
dHlwZSBvZiBzb21lIGJpbmRpbmdzIGJldHdlZW4gSlNDIGFuZCBXZWJDb3JlLiBObyBmdW5jdGlv
bmFsIGNoYW5nZSBpbnRlbmRlZCBvbiB0aGUgV2ViQ29yZSBzaWRlLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNCdWlsdGluUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyUHJpdmF0ZUNv
bnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0J1
aWx0aW5SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjpp
bml0aWFsaXplRXhlY3V0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0J1aWx0aW5SZWFkYWJs
ZUJ5dGVTdHJlYW1Db250cm9sbGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0
YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbUJZT0JSZWFk
ZXJQcml2YXRlQ29uc3RydWN0b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTQnVpbHRpblJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3RQcml2YXRlQ29uc3RydWN0
b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRo
b2RzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZSk6CisKIDIwMTgtMDQtMTggIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkIHdoZW4gV0tf
QUxURVJOQVRFX0ZSQU1FV09SS1NfRElSIGlzIHNldCB0byBub24tZW1wdHkgdmFsdWUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmU1OTNlMjhhYjA2NjBhZWVhY2RlZTJlYjNlMjE4
MWZkZWMwZmVhZS4uOTNhYmQ1MDlkMmNkYTAxNTI2MzI0OWNkY2U2YjdhNmUwODY2MzhhYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2NzIsNyArMTY3Miw2IEBACiAJCURDRjNE
NTZEMUNEMjk0NzYwMDNENUM2NSAvKiBMYXp5UHJvcGVydHlJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQ0YzRDU2ODFDRDI5NDY4MDAzRDVD
NjUgLyogTGF6eVByb3BlcnR5SW5saW5lcy5oICovOyB9OwogCQlEQ0ZERkJEOTFEMUY1RDlCMDBG
RTNENzIgLyogQjNCb3R0b21Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRENGREZCRDcxRDFGNUQ5ODAwRkUzRDcyIC8qIEIzQm90dG9tUHJv
dmlkZXIuaCAqLzsgfTsKIAkJRENGREZCREExRDFGNUQ5RTAwRkUzRDcyIC8qIEIzVHlwZU1hcC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRENGREZCRDgx
RDFGNUQ5ODAwRkUzRDcyIC8qIEIzVHlwZU1hcC5oICovOyB9OwotCQlERTI2RTkwMzFDQjVERDA1
MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTI2RTkwMjFDQjVERDA1MDBEMkJFODIgLyog
QnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmggKi87IH07CiAJCURFQTdFMjQ1MUJCQzY3N0YwMEQ3
ODQ0MCAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzkxN0U3QzFCNzkxMTA2MDAwRUJEMzMgLyogSlNU
eXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUxMjRBOEY3MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0
cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEy
NEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMxNjE4MTMxRUM1RkUxNzAwMDZB
MjE4IC8qIERPTUFubm90YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzMTYxODEwMUVDNUZFMDgwMDA2QTIxOCAvKiBET01Bbm5vdGF0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMxNTcs
NiArMzE1Niw3IEBACiAJCTFDQUE4QjRBMEQzMkMzOUEwMDQxQkNGRiAvKiBKYXZhU2NyaXB0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEphdmFTY3JpcHQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBQThCNEIwRDMyQzM5QTAwNDFCQ0ZGIC8qIEphdmFTY3Jp
cHRDb3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEphdmFTY3JpcHRDb3Jl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIwRUNCMTVFRkM1MjQ2MjRCQzJGMDJE
NSAvKiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyMjBDNjBDNjIwNkNFQUJEMDBGQzQ2MzcgLyogUGFyc2VyRXJy
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFyc2VyRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyNjAwQjVBNDE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2lu
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTdHJpbmdKb2lu
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjAwQjVBNTE1MkJBQUE3MDA5
MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNTdHJpbmdKb2luZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjYyRDg1
QjQxQzBENjUwRjAwNkFDQjYxIC8qIEFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJT
dGFsbHMuY3BwOyBwYXRoID0gYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTA4LDggKzQ1MDgsNiBAQAogCQlEQ0Yz
RDU2ODFDRDI5NDY4MDAzRDVDNjUgLyogTGF6eVByb3BlcnR5SW5saW5lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMYXp5UHJvcGVydHlJbmxpbmVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCURDRkRGQkQ3MUQxRjVEOTgwMEZFM0Q3MiAvKiBCM0JvdHRvbVBy
b3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQm90dG9tUHJvdmlk
ZXIuaDsgcGF0aCA9IGIzL0IzQm90dG9tUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRENGREZCRDgxRDFGNUQ5ODAwRkUzRDcyIC8qIEIzVHlwZU1hcC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1R5cGVNYXAuaDsgcGF0aCA9IGIzL0IzVHlwZU1h
cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlERTI2RTkwMjFDQjVERDA1MDBEMkJF
ODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlERTI2RTkwNjFDQjVERDk2MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVD
cmVhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ1aWx0aW5F
eGVjdXRhYmxlQ3JlYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURFNUEw
OUZGMUJBM0FDM0UwMDNENDQyNCAvKiBJbnRyaW5zaWNFbWl0dGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludHJpbnNpY0VtaXR0ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMTI0QThGNTBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNT
dHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3BhcXVlSlNTdHJpbmcu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyNEE4RjYwRTU1NTc3NTAwMzA5MUYx
IC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE9wYXF1ZUpTU3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYz
NTcsNiArNjM1NSw3IEBACiAJCQkJOTNGMEIzQUEwOUJCNERDMDAwNjhGQ0UzIC8qIFBhcnNlci5o
ICovLAogCQkJCTkzMDUyQzMyMEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5jcHAgKi8s
CiAJCQkJOTMwNTJDMzMwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNlckFyZW5hLmggKi8sCisJCQkJ
MjIwQzYwQzYyMDZDRUFCRDAwRkM0NjM3IC8qIFBhcnNlckVycm9yLmNwcCAqLywKIAkJCQkwRkND
QUU0MzE2RDBDRjZFMDBEMEM2NUIgLyogUGFyc2VyRXJyb3IuaCAqLywKIAkJCQk5QjQ5NTRFODFB
NjY0MERCMDAyODE1QTYgLyogUGFyc2VyRnVuY3Rpb25JbmZvLmggKi8sCiAJCQkJQTc3RjE4MjQx
NjQxOTI1NDAwNjQwQTQ3IC8qIFBhcnNlck1vZGVzLmggKi8sCkBAIC03OTExLDggKzc5MTAsNiBA
QAogCQkJCTVCODI0MzA0MURCN0FBNDkwMEVBNjM4NCAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBl
LmpzICovLAogCQkJCThCQzA2NDgyMUUxODBCNEEwMEIyQjhDQSAvKiBBc3luY0dlbmVyYXRvclBy
b3RvdHlwZS5qcyAqLywKIAkJCQk4QkMwNjQ5NTFFMUQ4MzhCMDBCMkI4Q0EgLyogQXN5bmNJdGVy
YXRvclByb3RvdHlwZS5qcyAqLywKLQkJCQlERTI2RTkwNjFDQjVERDk2MDBEMkJFODIgLyogQnVp
bHRpbkV4ZWN1dGFibGVDcmVhdG9yLmNwcCAqLywKLQkJCQlERTI2RTkwMjFDQjVERDA1MDBEMkJF
ODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmggKi8sCiAJCQkJQTdEODAxQTExODgwRDY2
RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi8sCiAJCQkJQTdEODAxQTIxODgw
RDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovLAogCQkJCUUzODBENjZCMUYx
OTI0OUQwMEE1OTA5NSAvKiBCdWlsdGluTmFtZXMuY3BwICovLApAQCAtODM0NCw3ICs4MzQxLDYg
QEAKIAkJCQk5QjQ2OTQzOTFGOTc0MzlFMDBDQ0IzRjkgLyogQm9vbGVhblByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTk2QjczMTkxQkRBMDY4MDAwMzMxQjg0IC8qIEJvb2xlYW5Qcm90
b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUEwODYyMDE4MkI3QTA0MDBGNkQ4NTEg
LyogQnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJREUyNkU5MDMxQ0I1REQwNTAwRDJC
RTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdE
ODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTc1RUU5QjIxOEFBQjdFMjAwQUFEMDQzIC8qIEJ1aWx0aW5OYW1lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTlEQTAwQTYxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zLnB5IGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9i
dWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9o
ZWFkZXIucHkKaW5kZXggY2RlMzU3Y2Q0MzljZWFmNDQ2NDI4ZTY4MTg4NDc4MDczYzAzYzQ5ZC4u
NzIxNGNkYWE1OTQzYjhiY2NhYzMzZTJjMDdmOWZmM2VjMTI3N2Q5NCAxMDA3NTUKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29t
YmluZWRfaGVhZGVyLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0
aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weQpAQCAtNjYsMTIgKzY2LDE3
IEBAIGNsYXNzIEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJHZW5lcmF0b3IoQnVpbHRpbnNHZW5lcmF0
b3IpOgogICAgICAgICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMpCiAKICAgICBkZWYgZ2Vu
ZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMoc2VsZik6Ci0gICAgICAgIHJldHVybiAiIiJuYW1l
c3BhY2UgSlNDIHsKKyAgICAgICAgcmV0dXJuICIiIgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5o
PgorCituYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIFZN
OworY2xhc3MgUGFyc2VyRXJyb3I7CiAKIGVudW0gY2xhc3MgQ29uc3RydWN0QWJpbGl0eSA6IHVu
c2lnbmVkOwotfSIiIgorfQorIiIiCiAKICAgICBkZWYgZ2VuZXJhdGVfc2VjdGlvbl9mb3Jfb2Jq
ZWN0KHNlbGYsIG9iamVjdCk6CiAgICAgICAgIGxpbmVzID0gW10KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFy
YXRlX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1
aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weQppbmRleCA1OGM4ZjJhYzhhNjQxNWEy
OTFjZmY4ODhjZjFmNjgwYzFkNjYwNDdkLi4xODg5NjI1OWIyZjNlYTZhOTYwNGE5YzQ4ZTBlMTk1
ZDA2OGNiZjJhIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWls
dGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVf
aGVhZGVyLnB5CkBAIC05Myw2ICs5MywxMCBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAg
ICAgICAgICAgICApLAogCiAgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAg
ICAgKCJKYXZhU2NyaXB0Q29yZSIsICJwYXJzZXIvUGFyc2VyRXJyb3IuaCIpLAorICAgICAgICAg
ICAgKSwKKworICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAogICAgICAgICAgICAgICAgICgiSmF2
YVNjcmlwdENvcmUiLCAiYnVpbHRpbnMvQnVpbHRpblV0aWxzLmgiKSwKICAgICAgICAgICAgICks
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1
aWx0aW5zX3RlbXBsYXRlcy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0
aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQppbmRleCA5MDdhNmQ3MTdjOTEwY2IwNzI5OTUwOWM2
MWRmODQ2YTljNzAxZWZjLi5kZDk4OTQ3ODdhZDhjOWVmNGJmYjRlMTI0MTNkM2I5YTc3ZGQ0ZGM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWls
dGluc190ZW1wbGF0ZXMucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVp
bHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5CkBAIC02OCwxNCArNjgsMTQgQEAgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiAgICAgQ29tYmluZWRIZWFkZXJTdGF0aWNNYWNyb3Mg
PSAoCiAgICAgIiIiI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBm
dW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcXAotICAgIEpTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKyAgICBF
eHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVO
YW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOwogCiAke21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxU
SU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFQ0xBUkVfQlVJTFRJ
Tl9HRU5FUkFUT1IiIiIpCiAKICAgICBTZXBhcmF0ZUhlYWRlclN0YXRpY01hY3JvcyA9ICgKICAg
ICAiIiIjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9u
TmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCi0gICAgSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworICAgIEV4cGVjdGVk
PEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dl
bmVyYXRvcihKU0M6OlZNJik7CiAKICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNy
b31fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVDTEFS
RV9CVUlMVElOX0dFTkVSQVRPUiIiIikKQEAgLTgzLDkgKzgzLDEyIEBAICR7bWFjcm9QcmVmaXh9
X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5F
UkFUT1IpCiAgICAgQ29tYmluZWRKU0NJbXBsZW1lbnRhdGlvblN0YXRpY01hY3JvcyA9ICgKICAg
ICAiIiIKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlv
bk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcXAotSlNDOjpGdW5jdGlvbkV4
ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCitFeHBlY3RlZDxK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5l
cmF0b3IoSlNDOjpWTSYgdm0pIFxcCiB7XFwKLSAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFi
bGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRh
YmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJ
bnRyaW5zaWMpOyBcCisgICAgYXV0byBleHBlY3RlZFVubGlua2VkID0gdm0uYnVpbHRpbkV4ZWN1
dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCk7XFwKKyAgICBpZiAoIWV4cGVjdGVkVW5s
aW5rZWQuaGFzX3ZhbHVlKCkpXFwKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV4cGVj
dGVkVW5saW5rZWQuZXJyb3IoKSk7XFwKKyAgICAgICAgcmV0dXJuIGV4cGVjdGVkVW5saW5rZWQu
dmFsdWUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3Vy
Y2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7XFwKIH0KICR7bWFj
cm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikK
ICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKQEAgLTk0LDkgKzk3LDEyIEBAICR7bWFj
cm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikK
ICAgICBTZXBhcmF0ZUpTQ0ltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zID0gKAogICAgICIiIgog
I2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwg
b3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJs
ZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKK0V4cGVjdGVkPEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihK
U0M6OlZNJiB2bSkgXFwKIHtcXAotICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+
Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCkt
PmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNp
Yyk7IFwKKyAgICBhdXRvIGV4cGVjdGVkVW5saW5rZWQgPSB2bS5idWlsdGluRXhlY3V0YWJsZXMo
KS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKTtcXAorICAgIGlmICghZXhwZWN0ZWRVbmxpbmtlZC5o
YXNfdmFsdWUoKSlcXAorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXhwZWN0ZWRVbmxp
bmtlZC5lcnJvcigpKTtcXAorICAgIHJldHVybiBleHBlY3RlZFVubGlua2VkLnZhbHVlKCktPmxp
bmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6
bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpO1xcCiB9CiAke21hY3JvUHJlZml4fV9G
T1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFU
T1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCkBAIC0xMDUsMTAgKzExMSwxMCBA
QCAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShERUZJ
TkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAgICAgQ29tYmluZWRXZWJDb3JlSW1wbGVtZW50YXRpb25T
dGF0aWNNYWNyb3MgPSAoCiAgICAgICAgICIiIgogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5F
UkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50Q291
bnQpIFxcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6
OlZNJiB2bSkgXFwKK0V4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJz
ZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKIHtcXAogICAgIEpT
Vk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKTsgXFwKLSAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9u
cygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGlu
ayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0
aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50
cmluc2ljKTsgXFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7
b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS52YWx1ZSgpLT5s
aW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVp
bHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJ
bnRyaW5zaWMpOyBcXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUoREVG
SU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpA
QCAtMTE3LDEwICsxMjMsMTAgQEAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUo
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogICAgIFNlcGFyYXRlV2ViQ29yZUltcGxlbWVudGF0
aW9uU3RhdGljTWFjcm9zID0gKAogICAgICAgICAiIiIKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5f
R0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVu
dENvdW50KSBcXAotSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3Io
SlNDOjpWTSYgdm0pIFxcCitFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6
UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCiB7XFwKICAg
ICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRh
Kj4odm0uY2xpZW50RGF0YSk7IFxcCi0gICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5j
dGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCkt
Pmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31C
dWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUj
I0ludHJpbnNpYyk7IFxcCisgICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMo
KS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCkudmFsdWUo
KS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxD
fUJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFt
ZSMjSW50cmluc2ljKTsgXFwKIH0KICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNy
b31fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVf
QlVJTFRJTl9HRU5FUkFUT1IKQEAgLTEzOSw3ICsxNDUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAj
ZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgb3Zl
cnJpZGRlbk5hbWUsIGxlbmd0aCkgXFwKLSAgICBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFxcCitFeHBlY3RlZDxKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gbmFtZSMjRXhlY3V0YWJsZSgpOyBcXAog
ICAgIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgY29uc3QgeyByZXR1cm4g
bV8jI25hbWUjI1NvdXJjZTsgfQogICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RN
YWNyb31fQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQogI3VuZGVmIEVY
UE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCkBAIC0xNjIsNyArMTY4LDcgQEAgcHJpdmF0ZToKIH07
CiAKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1l
LCBvdmVycmlkZGVuTmFtZSwgbGVuZ3RoKSBcXAotaW5saW5lIEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqICR7b2JqZWN0TmFtZX1CdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFi
bGUoKSBcXAoraW5saW5lIEV4cGVjdGVkPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
LCBKU0M6OlBhcnNlckVycm9yPiAke29iamVjdE5hbWV9QnVpbHRpbnNXcmFwcGVyOjpuYW1lIyNF
eGVjdXRhYmxlKCkgXFwKIHtcXAogICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUpIHtcXAog
ICAgICAgICBKU0M6OklkZW50aWZpZXIgZXhlY3V0YWJsZU5hbWUgPSBmdW5jdGlvbk5hbWUjI1B1
YmxpY05hbWUoKTtcXApAQCAtMjAyLDcgKzIwOCw3IEBAIHB1YmxpYzoKIGlubGluZSB2b2lkICR7
b2JqZWN0TmFtZX1CdWlsdGluRnVuY3Rpb25zOjppbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKIHsKICNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9OKGNvZGVOYW1lLCBmdW5jdGlv
bk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpXFwKLSAgICBtXyMjZnVuY3Rpb25OYW1lIyNG
dW5jdGlvbi5zZXQobV92bSwgJmdsb2JhbE9iamVjdCwgSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGUo
bV92bSwgY29kZU5hbWUjI0dlbmVyYXRvcihtX3ZtKSwgJmdsb2JhbE9iamVjdCkpOworICAgIG1f
IyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
RnVuY3Rpb246OmNyZWF0ZShtX3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLnZhbHVlKCks
ICZnbG9iYWxPYmplY3QpKTsKICAgICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFj
cm99X0JVSUxUSU5fQ09ERShFWFBPUlRfRlVOQ1RJT04pCiAjdW5kZWYgRVhQT1JUX0ZVTkNUSU9O
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWls
dGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtQ29tYmluZWQuanMt
cmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhw
ZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzLXJlc3VsdApp
bmRleCAwODQyOWY0ZTUyNjFjNzFiMDM1OWI3MDgwYzQ5Zjc5MzM1YTg0MjMxLi4zMjNkZGQ0ZjRh
MGQxZjY1ZTQ2ZWRjMmFmZjMzNzhhZTExNjFhN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1C
dWlsdGluLlByb21pc2UtQ29tYmluZWQuanMtcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0
aW4uUHJvbWlzZS1Db21iaW5lZC5qcy1yZXN1bHQKQEAgLTMxLDEzICszMSwxOCBAQAogCiAjcHJh
Z21hIG9uY2UKIAorCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisKIG5hbWVzcGFjZSBKU0Mg
ewogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgVk07CitjbGFzcyBQYXJzZXJFcnJv
cjsKIAogZW51bSBjbGFzcyBDb25zdHJ1Y3RBYmlsaXR5IDogdW5zaWduZWQ7CiB9CiAKKwogbmFt
ZXNwYWNlIEpTQyB7CiAKIC8qIEJ1aWx0aW4uUHJvbWlzZSAqLwpAQCAtNjMsNyArNjgsNyBAQCBl
eHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb21pc2VGdWxmaWxs
UHJvbWlzZUNvZGVDb25zdHJ1Y3RBYgogI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNU
SU9OX1BSSVZBVEVfR0xPQkFMX05BTUUobWFjcm8pIFwKIAogI2RlZmluZSBERUNMQVJFX0JVSUxU
SU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1
bWVudENvdW50KSBcCi0gICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5l
cmF0b3IoSlNDOjpWTSYpOworICAgIEV4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwg
SlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CiAKIEpTQ19G
T1JFQUNIX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERF
Q0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKQEAgLTE1Nyw5ICsxNjIsMTMgQEAgY29uc3QgY2hhciog
c19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZSA9CiAKIAogI2RlZmluZSBERUZJTkVf
QlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUs
IGFyZ3VtZW50Q291bnQpIFwKLUpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2Vu
ZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCitFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSos
IEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKIHtc
Ci0gICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJs
ZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgp
LCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgfQorICAgIGF1dG8gZXhw
ZWN0ZWRVbmxpbmtlZCA9IHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0
YWJsZSgpO1wKKyAgICBpZiAoIWV4cGVjdGVkVW5saW5rZWQuaGFzX3ZhbHVlKCkpXAorICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXhwZWN0ZWRVbmxpbmtlZC5lcnJvcigpKTtcCisgICAg
ICAgIHJldHVybiBleHBlY3RlZFVubGlua2VkLnZhbHVlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5F
eGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVO
YW1lIyNJbnRyaW5zaWMpO1wKK30KIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJ
TFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZh
U2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtU2VwYXJhdGUuanMtcmVzdWx0CmluZGV4IDRkN2Nk
MjJkYmZkMGNiNWE5NmZjNzRhMGFmNjAyMGRkYzc5MDVjMmYuLjVhNzUxNzlhMjZlODhkZmFkNjVl
MThiOTJiMzNiYzZkOGE3ZTcyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJv
bWlzZS1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNl
LVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtNjMsNyArNjMsNyBAQCBleHRlcm4gY29uc3QgSlNDOjpD
b25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGVDb25zdHJ1
Y3RBYgogICAgIG1hY3JvKHJlamVjdFByb21pc2UpIFwKIAogI2RlZmluZSBERUNMQVJFX0JVSUxU
SU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1
bWVudENvdW50KSBcCi0gICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5l
cmF0b3IoSlNDOjpWTSYpOworICAgIEV4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwg
SlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CiAKIEpTQ19G
T1JFQUNIX0JVSUxUSU4uUFJPTUlTRV9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVS
QVRPUikKICN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCkBAIC0xNTYsOSArMTU2LDEz
IEBAIGNvbnN0IGNoYXIqIHNfYnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGUgPQogCiAK
ICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUs
IG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJs
ZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAorRXhwZWN0ZWQ8SlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpT
Qzo6Vk0mIHZtKSBcCiB7XAotICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29k
ZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNv
ZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7
IH0KKyAgICBhdXRvIGV4cGVjdGVkVW5saW5rZWQgPSB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+
Y29kZU5hbWUjI0V4ZWN1dGFibGUoKTtcCisgICAgaWYgKCFleHBlY3RlZFVubGlua2VkLmhhc192
YWx1ZSgpKVwKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV4cGVjdGVkVW5saW5rZWQu
ZXJyb3IoKSk7XAorICAgIHJldHVybiBleHBlY3RlZFVubGlua2VkLnZhbHVlKCktPmxpbmsodm0s
IHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9w
dCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpO1wKK30KIEpTQ19GT1JFQUNIX0JVSUxUSU4uUFJP
TUlTRV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklO
RV9CVUlMVElOX0dFTkVSQVRPUgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnBy
b3RvdHlwZS1Db21iaW5lZC5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlw
ZS1Db21iaW5lZC5qcy1yZXN1bHQKaW5kZXggN2I3NzYwMjA1MzdkMDZmMGQ3N2NkMDZiZThkMmI2
YTdiYWNmZGE2OC4uYmQ5ZjBkMTljYzEwYmM3M2E1ZWNiNDc4MzAxMzlkNjY2NDlhZjQ3NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhw
ZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMtcmVzdWx0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzLXJlc3VsdApA
QCAtMzEsMTMgKzMxLDE4IEBACiAKICNwcmFnbWEgb25jZQogCisKKyNpbmNsdWRlIDx3dGYvRXhw
ZWN0ZWQuaD4KKwogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBj
bGFzcyBWTTsKK2NsYXNzIFBhcnNlckVycm9yOwogCiBlbnVtIGNsYXNzIENvbnN0cnVjdEFiaWxp
dHkgOiB1bnNpZ25lZDsKIH0KIAorCiBuYW1lc3BhY2UgSlNDIHsKIAogLyogQnVpbHRpbi5wcm90
b3R5cGUgKi8KQEAgLTc1LDcgKzgwLDcgQEAgZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJp
bGl0eSBzX2J1aWx0aW5Qcm90b3R5cGVUZXN0Q29kZUNvbnN0cnVjdEFiaWxpdHk7CiAjZGVmaW5l
IEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fUFJJVkFURV9HTE9CQUxfTkFNRShtYWNybykg
XAogCiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9u
TmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKLSAgICBKU0M6OkZ1bmN0aW9u
RXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisgICAgRXhwZWN0ZWQ8
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2Vu
ZXJhdG9yKEpTQzo6Vk0mKTsKIAogSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJ
TFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgpAQCAtMjc5
LDkgKzI4NCwxMyBAQCBjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm90b3R5cGVUZXN0Q29kZSA9CiAK
IAogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFt
ZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKLUpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCitFeHBlY3RlZDxKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3Io
SlNDOjpWTSYgdm0pIFwKIHtcCi0gICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5j
b2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+
Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2lj
KTsgfQorICAgIGF1dG8gZXhwZWN0ZWRVbmxpbmtlZCA9IHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygp
LT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpO1wKKyAgICBpZiAoIWV4cGVjdGVkVW5saW5rZWQuaGFz
X3ZhbHVlKCkpXAorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXhwZWN0ZWRVbmxpbmtl
ZC5lcnJvcigpKTtcCisgICAgICAgIHJldHVybiBleHBlY3RlZFVubGlua2VkLnZhbHVlKCktPmxp
bmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6
bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpO1wKK30KIEpTQ19GT1JFQUNIX0JVSUxU
SU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5f
R0VORVJBVE9SCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLVNl
cGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1
aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLVNlcGFyYXRl
LmpzLXJlc3VsdAppbmRleCBiMmI3MmNkYmI4OWFmMDQxZDQ5NzJkMWY5YjhkMTcwYTk1ZjZiNDFi
Li4xMDY3ODIxNzM3YjY5MWYzMDc1MmU4ZDU2MjU1ODQ3MWE1NzFlNzRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZh
U2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNj
cmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtU2VwYXJhdGUuanMtcmVzdWx0CkBAIC03Nyw3ICs3
Nyw3IEBAIGV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvdG90
eXBlVGVzdENvZGVDb25zdHJ1Y3RBYmlsaXR5OwogICAgIG1hY3JvKHRlc3QpIFwKIAogI2RlZmlu
ZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJy
aWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcCi0gICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUq
IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworICAgIEV4cGVjdGVkPEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6
OlZNJik7CiAKIEpTQ19GT1JFQUNIX0JVSUxUSU4uUFJPVE9UWVBFX0JVSUxUSU5fQ09ERShERUNM
QVJFX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IK
QEAgLTI4MCw5ICsyODAsMTMgQEAgY29uc3QgY2hhciogc19idWlsdGluUHJvdG90eXBlVGVzdENv
ZGUgPQogCiAKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5j
dGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcCi1KU0M6OkZ1bmN0aW9u
RXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAorRXhwZWN0ZWQ8
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2Vu
ZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCiB7XAotICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJs
ZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFi
bGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0lu
dHJpbnNpYyk7IH0KKyAgICBhdXRvIGV4cGVjdGVkVW5saW5rZWQgPSB2bS5idWlsdGluRXhlY3V0
YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKTtcCisgICAgaWYgKCFleHBlY3RlZFVubGlu
a2VkLmhhc192YWx1ZSgpKVwKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV4cGVjdGVk
VW5saW5rZWQuZXJyb3IoKSk7XAorICAgIHJldHVybiBleHBlY3RlZFVubGlua2VkLnZhbHVlKCkt
Pmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIHN0
ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpO1wKK30KIEpTQ19GT1JFQUNIX0JV
SUxUSU4uUFJPVE9UWVBFX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAj
dW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3Jl
LUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWls
dGluQ29uc3RydWN0b3ItQ29tYmluZWQuanMtcmVzdWx0CmluZGV4IDkyMTQyNmRmYmNiZmQ0ZWIy
MDQ2OTYyMTNiNTEwMGI2NTY2ODg1MDAuLmEwNTEzMjAzMDBhMmU4ODhjZWQ1ZTNiZDhiNGM5MzQ1
OTZkYjQ1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3Rz
L2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21i
aW5lZC5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJp
bmVkLmpzLXJlc3VsdApAQCAtMzAsMTMgKzMwLDE4IEBACiAKICNwcmFnbWEgb25jZQogCisKKyNp
bmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KKwogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBGdW5jdGlv
bkV4ZWN1dGFibGU7CiBjbGFzcyBWTTsKK2NsYXNzIFBhcnNlckVycm9yOwogCiBlbnVtIGNsYXNz
IENvbnN0cnVjdEFiaWxpdHkgOiB1bnNpZ25lZDsKIH0KIAorCiBuYW1lc3BhY2UgSlNDIHsKIAog
LyogQnVpbHRpbkNvbnN0cnVjdG9yICovCkBAIC02Miw3ICs2Nyw3IEBAIGV4dGVybiBjb25zdCBK
U0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUNvbnN0cnVj
dEFiaWxpdHk7CiAjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fUFJJVkFURV9H
TE9CQUxfTkFNRShtYWNybykgXAogCiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1Io
Y29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwK
LSAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZN
Jik7CisgICAgRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVy
cm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKIAogSlNDX0ZPUkVBQ0hfQlVJTFRJ
Tl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVDTEFSRV9CVUlMVElO
X0dFTkVSQVRPUgpAQCAtMjExLDkgKzIxNiwxMyBAQCBjb25zdCBjaGFyKiBzX2J1aWx0aW5Db25z
dHJ1Y3RvckZyb21Db2RlID0KIAogCiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihj
b2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJndW1lbnRDb3VudCkgXAot
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0p
IFwKK0V4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4g
Y29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAoge1wKLSAgICByZXR1cm4gdm0uYnVp
bHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1
aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18j
I2NvZGVOYW1lIyNJbnRyaW5zaWMpOyB9CisgICAgYXV0byBleHBlY3RlZFVubGlua2VkID0gdm0u
YnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCk7XAorICAgIGlmICgh
ZXhwZWN0ZWRVbmxpbmtlZC5oYXNfdmFsdWUoKSlcCisgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChleHBlY3RlZFVubGlua2VkLmVycm9yKCkpO1wKKyAgICAgICAgcmV0dXJuIGV4cGVjdGVk
VW5saW5rZWQudmFsdWUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVO
YW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7XAor
fQogSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1
bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUt
QnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0
aW5Db25zdHJ1Y3Rvci1TZXBhcmF0ZS5qcy1yZXN1bHQKaW5kZXggNmZmNTk3ZjU0ZTYyZjdkMTYw
YjgyOWYzYWRjOGZkOWNjZDNhNmQ5Mi4uMGJmZTUxZTFiNTliZWUyODI0YTBmZWEyYjZiZjcwZTg0
OGNiNjY0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFy
YXRlLmpzLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItU2VwYXJh
dGUuanMtcmVzdWx0CkBAIC02Miw3ICs2Miw3IEBAIGV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVj
dEFiaWxpdHkgc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUNvbnN0cnVjdEFiaWxpdHk7CiAg
ICAgbWFjcm8ob2YpIFwKIAogI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVO
YW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcCi0gICAg
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOwor
ICAgIEV4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4g
Y29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CiAKIEpTQ19GT1JFQUNIX0JVSUxUSU5DT05T
VFJVQ1RPUl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBE
RUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCkBAIC0yMTAsOSArMjEwLDEzIEBAIGNvbnN0IGNoYXIq
IHNfYnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNvZGUgPQogCiAKICNkZWZpbmUgREVGSU5FX0JVSUxU
SU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1
bWVudENvdW50KSBcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRv
cihKU0M6OlZNJiB2bSkgXAorRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6
OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCiB7XAotICAg
IHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+
bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgc3Rk
OjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IH0KKyAgICBhdXRvIGV4cGVjdGVk
VW5saW5rZWQgPSB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUo
KTtcCisgICAgaWYgKCFleHBlY3RlZFVubGlua2VkLmhhc192YWx1ZSgpKVwKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKGV4cGVjdGVkVW5saW5rZWQuZXJyb3IoKSk7XAorICAgIHJldHVy
biBleHBlY3RlZFVubGlua2VkLnZhbHVlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxl
cygpLT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRy
aW5zaWMpO1wKK30KIEpTQ19GT1JFQUNIX0JVSUxUSU5DT05TVFJVQ1RPUl9CVUlMVElOX0NPREUo
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRP
UgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWls
dGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1JbnRlcm5hbENsYXNoaW5nTmFtZXMtQ29tYmlu
ZWQuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRp
bnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtSW50ZXJuYWxDbGFzaGluZ05hbWVzLUNvbWJpbmVk
LmpzLXJlc3VsdAppbmRleCBiYjEyMTE3NWJlOGQ4ZjI5NmNlYWRkMTQ2ZTg5ZDMwY2FjZjkzM2Rk
Li5hNmU5ZTAwNzZiNTczNTAyNWQ0ZDc2ZTRjOTRlZjg4MzRmMjQzZjVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZh
U2NyaXB0Q29yZS1JbnRlcm5hbENsYXNoaW5nTmFtZXMtQ29tYmluZWQuanMtcmVzdWx0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0ph
dmFTY3JpcHRDb3JlLUludGVybmFsQ2xhc2hpbmdOYW1lcy1Db21iaW5lZC5qcy1yZXN1bHQKQEAg
LTMxLDEzICszMSwxOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorCisjaW5jbHVkZSA8d3RmL0V4cGVj
dGVkLmg+CisKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xh
c3MgVk07CitjbGFzcyBQYXJzZXJFcnJvcjsKIAogZW51bSBjbGFzcyBDb25zdHJ1Y3RBYmlsaXR5
IDogdW5zaWduZWQ7CiB9CiAKKwogbmFtZXNwYWNlIEpTQyB7CiAKIC8qIEludGVybmFsQ2xhc2hp
bmdOYW1lcyAqLwpAQCAtNjIsNyArNjcsNyBAQCBleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RB
YmlsaXR5IHNfaW50ZXJuYWxDbGFzaGluZ05hbWVzSXNSZWFkYWJsZVN0cmVhbUxvY2tlZAogI2Rl
ZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX1BSSVZBVEVfR0xPQkFMX05BTUUobWFj
cm8pIFwKIAogI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5j
dGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcCi0gICAgSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworICAgIEV4cGVj
dGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUj
I0dlbmVyYXRvcihKU0M6OlZNJik7CiAKIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShERUNMQVJF
X0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKQEAg
LTE0MCw5ICsxNDUsMTMgQEAgY29uc3QgY2hhciogc19pbnRlcm5hbENsYXNoaW5nTmFtZXNJc1Jl
YWRhYmxlU3RyZWFtTG9ja2VkQ29kZSA9CiAKIAogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5F
UkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50Q291
bnQpIFwKLUpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6
Vk0mIHZtKSBcCitFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2Vy
RXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKIHtcCi0gICAgcmV0dXJu
IHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZt
LCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxv
cHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgfQorICAgIGF1dG8gZXhwZWN0ZWRVbmxpbmtl
ZCA9IHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpO1wKKyAg
ICBpZiAoIWV4cGVjdGVkVW5saW5rZWQuaGFzX3ZhbHVlKCkpXAorICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoZXhwZWN0ZWRVbmxpbmtlZC5lcnJvcigpKTtcCisgICAgICAgIHJldHVybiBl
eHBlY3RlZFVubGlua2VkLnZhbHVlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygp
LT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5z
aWMpO1wKK30KIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFU
T1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUt
QW5vdGhlckd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1B
bm90aGVyR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKaW5kZXggYjhi
Y2ZiODQ3ZTAxNTA1MmVhNjY5ZjMxMmY1ZjM1ZmZlZGNkODZjOC4uY2ZkNzVmNzE3OTI0MmE4NGJh
MDEwMDM4ZjI5MDkzNTgzNWMwMWFiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Bbm90aGVyR3VhcmRlZElu
dGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Bbm90aGVyR3VhcmRl
ZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTM1LDYgKzM1LDcgQEAKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluVXRpbHMuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9JZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNGdW5jdGlv
bi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1BhcnNlckVycm9yLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC02MCw3ICs2MSw3IEBAIGV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxp
dHkgc19hbm90aGVyR3VhcmRlZEludGVybmFsQnVpbHRpbkxldHNGZXRjaENvZGVDCiAgICAgbWFj
cm8obGV0c0ZldGNoKSBcCiAKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2Rl
TmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJndW1lbnRDb3VudCkgXAotICAg
IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsK
KyAgICBFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+
IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOwogCiBXRUJDT1JFX0ZPUkVBQ0hfQU5PVEhF
UkdVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5F
UkFUT1IpCiAjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgpAQCAtNzcsNyArNzgsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiAjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5h
bWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGxlbmd0aCkgXAotICAgIEpTQzo6VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXAorRXhwZWN0ZWQ8
SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IG5hbWUj
I0V4ZWN1dGFibGUoKTsgXAogICAgIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgbmFtZSMjU291cmNl
KCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQogICAgIFdFQkNPUkVfRk9SRUFD
SF9BTk9USEVSR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NPREUoRVhQT1NFX0JVSUxU
SU5fRVhFQ1VUQUJMRVMpCiAjdW5kZWYgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMKQEAgLTEw
MCw3ICsxMDEsNyBAQCBwcml2YXRlOgogfTsKIAogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVD
VVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpIFwKLWlu
bGluZSBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBBbm90aGVyR3VhcmRlZEludGVy
bmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK2lubGluZSBF
eHBlY3RlZDxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJv
cj4gQW5vdGhlckd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4
ZWN1dGFibGUoKSBcCiB7XAogICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUpIHtcCiAgICAg
ICAgIEpTQzo6SWRlbnRpZmllciBleGVjdXRhYmxlTmFtZSA9IGZ1bmN0aW9uTmFtZSMjUHVibGlj
TmFtZSgpO1wKQEAgLTEzOSw3ICsxNDAsNyBAQCBwdWJsaWM6CiBpbmxpbmUgdm9pZCBBbm90aGVy
R3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnM6OmluaXQoSlNDOjpKU0dsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogI2RlZmluZSBFWFBPUlRfRlVOQ1RJT04oY29kZU5h
bWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGxlbmd0aClcCi0gICAgbV8jI2Z1bmN0
aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNGdW5jdGlv
bjo6Y3JlYXRlKG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0b3IobV92bSksICZnbG9iYWxPYmplY3Qp
KTsKKyAgICBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbi5zZXQobV92bSwgJmdsb2JhbE9iamVj
dCwgSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGUobV92bSwgY29kZU5hbWUjI0dlbmVyYXRvcihtX3Zt
KS52YWx1ZSgpLCAmZ2xvYmFsT2JqZWN0KSk7CiAgICAgV0VCQ09SRV9GT1JFQUNIX0FOT1RIRVJH
VUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShFWFBPUlRfRlVOQ1RJT04pCiAjdW5k
ZWYgRVhQT1JUX0ZVTkNUSU9OCiB9CkBAIC0yMTcsMTAgKzIxOCwxMCBAQCBjb25zdCBjaGFyKiBz
X2Fub3RoZXJHdWFyZGVkSW50ZXJuYWxCdWlsdGluTGV0c0ZldGNoQ29kZSA9CiAKIAogI2RlZmlu
ZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJp
ZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKLUpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2Rl
TmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCitFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYg
dm0pIFwKIHtcCiAgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxK
U1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcCi0gICAgcmV0dXJuIGNsaWVudERhdGEt
PmJ1aWx0aW5GdW5jdGlvbnMoKS5hbm90aGVyR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5z
KCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1
bmN0aW9ucygpLmFub3RoZXJHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFt
ZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisg
ICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5hbm90aGVyR3VhcmRlZElu
dGVybmFsQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS52YWx1ZSgpLT5s
aW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuYW5vdGhlckd1YXJkZWRJbnRl
cm5hbEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBz
XyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFwKIH0KIFdFQkNPUkVfRk9SRUFDSF9BTk9USEVSR1VB
UkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9S
KQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1BcmJp
dHJhcnlDb25kaXRpb25hbEd1YXJkLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtQXJiaXRyYXJ5
Q29uZGl0aW9uYWxHdWFyZC1TZXBhcmF0ZS5qcy1yZXN1bHQKaW5kZXggZDRkNDFiZjBjM2RjNzE1
NWIxNGNjYzE0ODcyZjRhNjUwYjRkYjkxOS4uN2Y1NjRjZWFiMTE3ZGIxNDY2OTYwMWZiYWZjMGU3
MWYwYmM4NDhkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1BcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkLVNl
cGFyYXRlLmpzLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0
cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUFyYml0cmFyeUNvbmRpdGlvbmFsR3VhcmQtU2Vw
YXJhdGUuanMtcmVzdWx0CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQnVpbHRpblV0aWxzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9QYXJzZXJFcnJvci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjEsNyArNjIs
NyBAQCBleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYXJiaXRyYXJ5Q29uZGl0
aW9uYWxHdWFyZElzUmVhZGFibGVTdHJlYW1MbwogICAgIG1hY3JvKGlzUmVhZGFibGVTdHJlYW1M
b2NrZWQpIFwKIAogI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBm
dW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcCi0gICAgSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworICAgIEV4
cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gY29kZU5h
bWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CiAKIFdFQkNPUkVfRk9SRUFDSF9BUkJJVFJBUllDT05E
SVRJT05BTEdVQVJEX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQogI3Vu
ZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKQEAgLTc4LDcgKzc5LDcgQEAgcHVibGljOgog
ICAgIH0KIAogI2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlv
bk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpIFwKLSAgICBKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwKK0V4cGVjdGVkPEpTQzo6VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBuYW1lIyNFeGVjdXRhYmxl
KCk7IFwKICAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KICAgICBXRUJDT1JFX0ZPUkVBQ0hfQVJCSVRSQVJZ
Q09ORElUSU9OQUxHVUFSRF9CVUlMVElOX0NPREUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMp
CiAjdW5kZWYgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMKQEAgLTEwMSw3ICsxMDIsNyBAQCBw
cml2YXRlOgogfTsKIAogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBm
dW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpIFwKLWlubGluZSBKU0M6OlVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBBcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkQnVpbHRpbnNX
cmFwcGVyOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAoraW5saW5lIEV4cGVjdGVkPEpTQzo6VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBBcmJpdHJhcnlDb25kaXRp
b25hbEd1YXJkQnVpbHRpbnNXcmFwcGVyOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAoge1wKICAgICBp
ZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxlKSB7XAogICAgICAgICBKU0M6OklkZW50aWZpZXIgZXhl
Y3V0YWJsZU5hbWUgPSBmdW5jdGlvbk5hbWUjI1B1YmxpY05hbWUoKTtcCkBAIC0xODcsMTAgKzE4
OCwxMCBAQCBjb25zdCBjaGFyKiBzX2FyYml0cmFyeUNvbmRpdGlvbmFsR3VhcmRJc1JlYWRhYmxl
U3RyZWFtTG9ja2VkQ29kZSA9CiAKIAogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1Io
Y29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwK
LUpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZt
KSBcCitFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+
IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKIHtcCiAgICAgSlNWTUNsaWVudERh
dGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERh
dGEpOyBcCi0gICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5hcmJpdHJh
cnlDb25kaXRpb25hbEd1YXJkQnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5r
KHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuYXJiaXRyYXJ5Q29uZGl0aW9uYWxH
dWFyZEJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2Rl
TmFtZSMjSW50cmluc2ljKTsgXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rp
b25zKCkuYXJiaXRyYXJ5Q29uZGl0aW9uYWxHdWFyZEJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1
dGFibGUoKS52YWx1ZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCku
YXJiaXRyYXJ5Q29uZGl0aW9uYWxHdWFyZEJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBz
dGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAogfQogV0VCQ09SRV9GT1JF
QUNIX0FSQklUUkFSWUNPTkRJVElPTkFMR1VBUkRfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElO
X0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dl
YkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkQnVp
bHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKaW5kZXggNTkyNTRjZTJjZTA5MTE2ZjIwZDZjNWExYjY0
ZDUxMWYyNTVkNThkNy4uYTUxMzkwYWE5MDllMDRkNGI5NTU4MWU1MjZkOTBmMWY4MDgwOTRjZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
ZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2Vi
Q29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTM2LDYgKzM2LDcgQEAK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluVXRpbHMuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9JZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNGdW5j
dGlvbi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1BhcnNlckVycm9yLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC02MSw3ICs2Miw3IEBAIGV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFi
aWxpdHkgc19ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlQ29uCiAgICAg
bWFjcm8oaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCkgXAogCiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJ
Tl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3Vt
ZW50Q291bnQpIFwKLSAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVy
YXRvcihKU0M6OlZNJik7CisgICAgRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBK
U0M6OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKIAogV0VCQ09S
RV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VO
RVJBVE9SKQogI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKQEAgLTc4LDcgKzc5LDcg
QEAgcHVibGljOgogICAgIH0KIAogI2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhu
YW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpIFwKLSAgICBKU0M6OlVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwKK0V4cGVjdGVk
PEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBuYW1l
IyNFeGVjdXRhYmxlKCk7IFwKICAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIG5hbWUjI1NvdXJj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KICAgICBXRUJDT1JFX0ZPUkVB
Q0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVT
KQogI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCkBAIC0xMDEsNyArMTAyLDcgQEAg
cHJpdmF0ZToKIH07CiAKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwg
ZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgbGVuZ3RoKSBcCi1pbmxpbmUgSlNDOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6Om5h
bWUjI0V4ZWN1dGFibGUoKSBcCitpbmxpbmUgRXhwZWN0ZWQ8SlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IEd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFw
cGVyOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAoge1wKICAgICBpZiAoIW1fIyNuYW1lIyNFeGVjdXRh
YmxlKSB7XAogICAgICAgICBKU0M6OklkZW50aWZpZXIgZXhlY3V0YWJsZU5hbWUgPSBmdW5jdGlv
bk5hbWUjI1B1YmxpY05hbWUoKTtcCkBAIC0xODcsMTAgKzE4OCwxMCBAQCBjb25zdCBjaGFyKiBz
X2d1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUgPQogCiAKICNkZWZpbmUg
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRk
ZW5OYW1lLCBhcmd1bWVudENvdW50KSBcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5h
bWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAorRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1
dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZt
KSBcCiB7XAogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXAotICAgIHJldHVybiBjbGllbnREYXRhLT5i
dWlsdGluRnVuY3Rpb25zKCkuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVj
dXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5ndWFyZGVk
QnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNj
b2RlTmFtZSMjSW50cmluc2ljKTsgXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVu
Y3Rpb25zKCkuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCku
dmFsdWUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmd1YXJkZWRC
dWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2Nv
ZGVOYW1lIyNJbnRyaW5zaWMpOyBcCiB9CiBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5f
QlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJ
TFRJTl9HRU5FUkFUT1IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1T
ZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUu
anMtcmVzdWx0CmluZGV4IDY1ZGQzZTg0MzEwNWNjOWJlZGQ3MzM0MTZhMTFmNTdiNzFjOTgwMTEu
LmE4ODQ4NmI3NTZlZDBkZDgwNDgyOGIyNWFhMzkxOTIyNjM4ODJjZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNv
cmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1H
dWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMzYsNiArMzYsNyBA
QAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5VdGlscy5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Z1
bmN0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUGFyc2VyRXJyb3IuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTYxLDcgKzYyLDcgQEAgZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0
QWJpbGl0eSBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2UKICAg
ICBtYWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKSBcCiAKICNkZWZpbmUgREVDTEFSRV9CVUlM
VElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJn
dW1lbnRDb3VudCkgXAotICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2Vu
ZXJhdG9yKEpTQzo6Vk0mKTsKKyAgICBFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSos
IEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOwogCiBXRUJD
T1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9C
VUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCkBAIC03
OCw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhF
Q1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgbGVuZ3RoKSBcCi0g
ICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBc
CitFeHBlY3RlZDxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJF
cnJvcj4gbmFtZSMjRXhlY3V0YWJsZSgpOyBcCiAgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBu
YW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CiAgICAgV0VC
Q09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9TRV9C
VUlMVElOX0VYRUNVVEFCTEVTKQogI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCkBA
IC0xMDEsNyArMTAyLDcgQEAgcHJpdmF0ZToKIH07CiAKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5f
RVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgbGVuZ3RoKSBc
Ci1pbmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogR3VhcmRlZEludGVybmFs
QnVpbHRpbkJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK2lubGluZSBFeHBl
Y3RlZDxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4g
R3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgp
IFwKIHtcCiAgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSkge1wKICAgICAgICAgSlNDOjpJ
ZGVudGlmaWVyIGV4ZWN1dGFibGVOYW1lID0gZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCk7XApA
QCAtMTQwLDcgKzE0MSw3IEBAIHB1YmxpYzoKIGlubGluZSB2b2lkIEd1YXJkZWRJbnRlcm5hbEJ1
aWx0aW5CdWlsdGluRnVuY3Rpb25zOjppbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKIHsKICNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9OKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUs
IG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpXAotICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9u
LnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZShtX3ZtLCBj
b2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7CisgICAgbV8jI2Z1bmN0
aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNGdW5jdGlv
bjo6Y3JlYXRlKG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0b3IobV92bSkudmFsdWUoKSwgJmdsb2Jh
bE9iamVjdCkpOwogICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JV
SUxUSU5fQ09ERShFWFBPUlRfRlVOQ1RJT04pCiAjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OCiB9CkBA
IC0yMTksMTAgKzIyMCwxMCBAQCBjb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5J
c1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZSA9CiAKIAogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9H
RU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50
Q291bnQpIFwKLUpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpT
Qzo6Vk0mIHZtKSBcCitFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFy
c2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKIHtcCiAgICAgSlNW
TUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZt
LmNsaWVudERhdGEpOyBcCi0gICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMo
KS5ndWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgp
LT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuZ3VhcmRlZEludGVybmFs
QnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNj
b2RlTmFtZSMjSW50cmluc2ljKTsgXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVu
Y3Rpb25zKCkuZ3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1
dGFibGUoKS52YWx1ZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCku
Z3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6
Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAogfQogV0VCQ09SRV9GT1JFQUNI
X0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVS
QVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUt
VW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0
aW4tU2VwYXJhdGUuanMtcmVzdWx0CmluZGV4IDA2YzkzNWFjODE0OTgyYTg5MTdiMTQ2YWMwMDE2
MWQ4M2VmZGY0YjcuLjRhYmIxZTBlMmI4MWYwY2NlNDEyMGM5NWE2N2EwNzIyOTQxODBlYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4
cGVjdGVkL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2Vi
Q29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5VdGlscy5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Z1
bmN0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUGFyc2VyRXJyb3IuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTU5LDcgKzYwLDcgQEAgZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0
QWJpbGl0eSBzX3VuZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUMKICAg
ICBtYWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKSBcCiAKICNkZWZpbmUgREVDTEFSRV9CVUlM
VElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJn
dW1lbnRDb3VudCkgXAotICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2Vu
ZXJhdG9yKEpTQzo6Vk0mKTsKKyAgICBFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSos
IEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOwogCiBXRUJD
T1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElO
X0dFTkVSQVRPUikKICN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCkBAIC03Niw3ICs3
Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAKICNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJM
RVMobmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgbGVuZ3RoKSBcCi0gICAgSlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCitFeHBl
Y3RlZDxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4g
bmFtZSMjRXhlY3V0YWJsZSgpOyBcCiAgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNT
b3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CiAgICAgV0VCQ09SRV9G
T1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNV
VEFCTEVTKQogI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCkBAIC05OSw3ICsxMDAs
NyBAQCBwcml2YXRlOgogfTsKIAogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhu
YW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpIFwKLWlubGluZSBKU0M6
OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFw
cGVyOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAoraW5saW5lIEV4cGVjdGVkPEpTQzo6VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBVbmd1YXJkZWRCdWlsdGluQnVp
bHRpbnNXcmFwcGVyOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAoge1wKICAgICBpZiAoIW1fIyNuYW1l
IyNFeGVjdXRhYmxlKSB7XAogICAgICAgICBKU0M6OklkZW50aWZpZXIgZXhlY3V0YWJsZU5hbWUg
PSBmdW5jdGlvbk5hbWUjI1B1YmxpY05hbWUoKTtcCkBAIC0xODEsMTAgKzE4MiwxMCBAQCBjb25z
dCBjaGFyKiBzX3VuZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZSA9CiAK
IAogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFt
ZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKLUpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCitFeHBlY3RlZDxKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3Io
SlNDOjpWTSYgdm0pIFwKIHtcCiAgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcCi0gICAgcmV0dXJuIGNs
aWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS51bmd1YXJkZWRCdWlsdGluQnVpbHRpbnMoKS5j
b2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rp
b25zKCkudW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6
Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAorICAgIHJldHVybiBjbGllbnRE
YXRhLT5idWlsdGluRnVuY3Rpb25zKCkudW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5h
bWUjI0V4ZWN1dGFibGUoKS52YWx1ZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVu
Y3Rpb25zKCkudW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBz
dGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAogfQogV0VCQ09SRV9GT1JF
QUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRP
UikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUteG1s
Q2FzaW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJh
dGUuanMtcmVzdWx0CmluZGV4IGIyNGJjYTNjYWE1Y2QwMDhkYzg4YzI5Njc1ZDQzNDFhMzgwMWZi
YjYuLjQ0OTQ0ZTg4ZGViNWViY2MyODU1NmYxNTlhZjQ1YzQyNTZlY2UxYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dl
YkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS14bWxDYXNp
bmdUZXN0LVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0J1aWx0aW5VdGlscy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Z1bmN0aW9uLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvUGFyc2VyRXJyb3IuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAg
LTc1LDcgKzc2LDcgQEAgZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3htbENh
c2luZ1Rlc3RVcmxDYXNpbmdUZXN0Q29kZUNvbnN0cnVjdEFiaWwKICAgICBtYWNybyh4bWxDYXNp
bmdUZXN0KSBcCiAKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwg
ZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJndW1lbnRDb3VudCkgXAotICAgIEpTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKyAgICBF
eHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVO
YW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOwogCiBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVT
VF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUNMQVJF
X0JVSUxUSU5fR0VORVJBVE9SCkBAIC05Miw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKICNk
ZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVy
cmlkZGVuTmFtZSwgbGVuZ3RoKSBcCi0gICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCitFeHBlY3RlZDxKU0M6OlVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gbmFtZSMjRXhlY3V0YWJsZSgpOyBcCiAgICAg
Y29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMj
bmFtZSMjU291cmNlOyB9CiAgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJ
Tl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQogI3VuZGVmIEVYUE9TRV9CVUlMVElO
X0VYRUNVVEFCTEVTCkBAIC0xMTUsNyArMTE2LDcgQEAgcHJpdmF0ZToKIH07CiAKICNkZWZpbmUg
REVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVu
TmFtZSwgbGVuZ3RoKSBcCi1pbmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
eG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK2lubGlu
ZSBFeHBlY3RlZDxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJF
cnJvcj4geG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwK
IHtcCiAgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSkge1wKICAgICAgICAgSlNDOjpJZGVu
dGlmaWVyIGV4ZWN1dGFibGVOYW1lID0gZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCk7XApAQCAt
MTU0LDcgKzE1NSw3IEBAIHB1YmxpYzoKIGlubGluZSB2b2lkIHhtbENhc2luZ1Rlc3RCdWlsdGlu
RnVuY3Rpb25zOjppbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICNk
ZWZpbmUgRVhQT1JUX0ZVTkNUSU9OKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5O
YW1lLCBsZW5ndGgpXAotICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAm
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZShtX3ZtLCBjb2RlTmFtZSMjR2Vu
ZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7CisgICAgbV8jI2Z1bmN0aW9uTmFtZSMjRnVu
Y3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlKG1f
dm0sIGNvZGVOYW1lIyNHZW5lcmF0b3IobV92bSkudmFsdWUoKSwgJmdsb2JhbE9iamVjdCkpOwog
ICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fQ09ERShFWFBPUlRfRlVO
Q1RJT04pCiAjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OCiB9CkBAIC0yNzIsMTAgKzI3MywxMCBAQCBj
b25zdCBjaGFyKiBzX3htbENhc2luZ1Rlc3RVcmxDYXNpbmdUZXN0Q29kZSA9CiAKIAogI2RlZmlu
ZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJp
ZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKLUpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2Rl
TmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCitFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYg
dm0pIFwKIHtcCiAgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxK
U1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcCi0gICAgcmV0dXJuIGNsaWVudERhdGEt
PmJ1aWx0aW5GdW5jdGlvbnMoKS54bWxDYXNpbmdUZXN0QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhl
Y3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkueG1sQ2Fz
aW5nVGVzdEJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNj
b2RlTmFtZSMjSW50cmluc2ljKTsgXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVu
Y3Rpb25zKCkueG1sQ2FzaW5nVGVzdEJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS52
YWx1ZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkueG1sQ2FzaW5n
VGVzdEJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2Rl
TmFtZSMjSW50cmluc2ljKTsgXAogfQogV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJ
TFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJ
Tl9HRU5FUkFUT1IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA0YjNkOWY3ZWM1MDQw
ODBiNzIzMDgwMzJhN2QyZWE3MGNkY2JmYjViLi5jZTAzMjA2ZjBmYmMzNmRlMTdmZTFmOWIwOWQw
ZDY3NTJhNjBiMWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0xNzksNyArMTc5
LDYgQEAgYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcAogYmluZGluZ3MvU2NyaXB0VmFsdWUuY3Bw
CiAKIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKLWJ1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlQ3JlYXRvci5jcHAKIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5jcHAKIAogYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHAKQEAgLTY1Myw2ICs2NTIsNyBAQCBwYXJzZXIvTm9kZXMuY3BwCiBwYXJz
ZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcAogcGFyc2VyL1BhcnNlci5jcHAKIHBhcnNlci9QYXJz
ZXJBcmVuYS5jcHAKK3BhcnNlci9QYXJzZXJFcnJvci5jcHAKIHBhcnNlci9Tb3VyY2VQcm92aWRl
ci5jcHAKIHBhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlLmNwcAogcGFyc2VyL1VubGlua2VkU291
cmNlQ29kZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDJiNzllN2U2ZWY5NWNlMjFjNDQzMjNhNmVhNDFkMzZhMzNmYTM1OTUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlQ3Jl
YXRvci5oIgotCi0jaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCi0KLW5hbWVzcGFjZSBK
U0MgewotCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1dGFi
bGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBDb25zdHJ1Y3RvcktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBhYmlsaXR5KQotewot
ICAgIHJldHVybiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUodm0sIHNvdXJj
ZSwgaWRlbnQsIGtpbmQsIGFiaWxpdHkpOwotfQotICAgIAotfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFi
bGVDcmVhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVDcmVhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5YzA4ODRiN2I2
MWRmMDgwY2RhYzNhZTVjYjJkMDZlZTMzNWFlMTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlQ3JlYXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaW5jbHVkZSAiQ29uc3RydWN0QWJpbGl0eS5oIgotI2luY2x1ZGUgIlBhcnNlck1vZGVzLmgi
Ci0jaW5jbHVkZSAiU291cmNlQ29kZS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotSlNfRVhQT1JU
X1BSSVZBVEUgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRh
YmxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBDb25zdHJ1Y3Rv
cktpbmQsIENvbnN0cnVjdEFiaWxpdHkpOwotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAK
aW5kZXggYWQwZDgzOWFlMTkxODQwNDkzYzY1ZmM0MjgyZDQ3NTUyMTA3MTZkYy4uZWY2OTk2MDYx
MmEyYjliZTg3NGNjZGI4NjNkZjM5Yzg1ZWM1NDUxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiUGFyc2VyLmgiCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTEsMjUgKzUy
LDM0IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNy
ZWF0ZURlZmF1bHRDb25zdHJ1Y3RvcihDb25zdHJ1CiAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmU6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpCYXNlOgot
ICAgICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBtYWtlU291cmNlKGJhc2VDb25z
dHJ1Y3RvckNvZGUsIHsgfSksIG5hbWUsIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0
eTo6Q2FuQ29uc3RydWN0KTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUV4ZWN1dGFibGVPckNyYXNo
KG1fdm0sIG1ha2VTb3VyY2UoYmFzZUNvbnN0cnVjdG9yQ29kZSwgeyB9KSwgbmFtZSwgY29uc3Ry
dWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QpOwogICAgIGNhc2UgQ29u
c3RydWN0b3JLaW5kOjpFeHRlbmRzOgotICAgICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZSht
X3ZtLCBtYWtlU291cmNlKGRlcml2ZWRDb25zdHJ1Y3RvckNvZGUsIHsgfSksIG5hbWUsIGNvbnN0
cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0KTsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZUV4ZWN1dGFibGVPckNyYXNoKG1fdm0sIG1ha2VTb3VyY2UoZGVyaXZlZENvbnN0
cnVjdG9yQ29kZSwgeyB9KSwgbmFtZSwgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5
OjpDYW5Db25zdHJ1Y3QpOwogICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWls
dGluRXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiBjb2RlLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkpCitFeHBlY3RlZFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1
dGFibGUoY29uc3QgU291cmNlQ29kZSYgY29kZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQ29u
c3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KQogewogICAgIHJldHVybiBjcmVhdGVFeGVj
dXRhYmxlKG1fdm0sIGNvZGUsIG5hbWUsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgY29uc3RydWN0
QWJpbGl0eSk7CiB9CiAKIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGlu
RXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIGNvZGUsIGNvbnN0IElkZW50aWZp
ZXImIG5hbWUsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSkKIHsKLSAgICByZXR1
cm4gQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKHZtLCBjb2RlLCBuYW1lLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGNvbnN0cnVjdEFiaWxpdHkpOworICAgIHJldHVybiBCdWls
dGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGVPckNyYXNoKHZtLCBjb2RlLCBuYW1lLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGNvbnN0cnVjdEFiaWxpdHkpOwogfQogCi1VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZN
JiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBD
b25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVj
dEFiaWxpdHkpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVz
OjpjcmVhdGVFeGVjdXRhYmxlT3JDcmFzaChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2lu
ZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KQoreworICAgIGF1dG8gZXhwZWN0
ZWQgPSBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUodm0sIHNvdXJjZSwgbmFt
ZSwgY29uc3RydWN0b3JLaW5kLCBjb25zdHJ1Y3RBYmlsaXR5KTsKKyAgICBpZiAoIWV4cGVjdGVk
Lmhhc192YWx1ZSgpKSB7CisgICAgICAgIGRhdGFMb2dMbigiRmF0YWwgZXJyb3IgY29tcGlsaW5n
IGJ1aWx0aW4gZnVuY3Rpb24gJyIsIG5hbWUuc3RyaW5nKCksICInIik7CisgICAgICAgIENSQVNI
KCk7CisgICAgfQorICAgIHJldHVybiBleHBlY3RlZC52YWx1ZSgpOworfQorCitFeHBlY3RlZFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0
YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYg
bmFtZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSBj
b25zdHJ1Y3RBYmlsaXR5KQogewogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFz
dE5ld2xpbmU7CiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CkBAIC04Myw4ICs5Myw4IEBAIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFi
bGUoVk0mIHZtLCBjb25zdCBTCiAgICAgICAgICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lLCBj
b25zdHJ1Y3RvcktpbmQpOwogCiAgICAgaWYgKCFwcm9ncmFtKSB7Ci0gICAgICAgIGRhdGFMb2co
IkZhdGFsIGVycm9yIGNvbXBpbGluZyBidWlsdGluIGZ1bmN0aW9uICciLCBuYW1lLnN0cmluZygp
LCAiJzogIiwgZXJyb3IubWVzc2FnZSgpKTsKLSAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKFdURk1vdmUoZXJyb3IpKTsKICAgICB9CiAKICAgICBTdGF0ZW1lbnROb2RlKiBleHByU3Rh
dGVtZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50KCk7CkBAIC0xMDYsNyArMTE2LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhl
Y3V0YWJsZShWTSYgdm0sIGNvbnN0IFMKICAgICBtZXRhZGF0YS0+b3ZlcnJpZGVOYW1lKG5hbWUp
OwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZHVtbXlURFpWYXJpYWJsZXM7CiAgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5kLCBjb25zdHJ1
Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIGR1bW15VERaVmFyaWFibGVz
LCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIFdURk1vdmUocGFyZW50U291cmNlT3ZlcnJpZGUp
KTsKLSAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxlOworICAgIHJldHVybiBFeHBlY3RlZFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKGZ1bmN0aW9uRXhlY3V0YWJsZSk7CiB9CiAKIHZvaWQg
QnVpbHRpbkV4ZWN1dGFibGVzOjpmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4sIHZvaWQqIGNvbnRl
eHQpCkBAIC0xMTUsMTUgKzEyNSwxOCBAQCB2b2lkIEJ1aWx0aW5FeGVjdXRhYmxlczo6ZmluYWxp
emUoSGFuZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0KQogfQogCiAjZGVmaW5lIERFRklORV9C
VUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGVOYW1lLCBsZW5n
dGgpIFwKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6Om5h
bWUjI0V4ZWN1dGFibGUoKSBcCitFeHBlY3RlZFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIEJ1
aWx0aW5FeGVjdXRhYmxlczo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKIHtcCiAgICAgaWYgKCFtXyMj
bmFtZSMjRXhlY3V0YWJsZSkge1wKICAgICAgICAgSWRlbnRpZmllciBleGVjdXRhYmxlTmFtZSA9
IG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZnVuY3Rpb25OYW1lIyNQdWJsaWNO
YW1lKCk7XAogICAgICAgICBpZiAob3ZlcnJpZGVOYW1lKVwKICAgICAgICAgICAgIGV4ZWN1dGFi
bGVOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmbV92bSwgb3ZlcnJpZGVOYW1lKTtcCi0g
ICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gV2VhazxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZT4oY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV8jI25hbWUjI1NvdXJjZSwgZXhlY3V0YWJs
ZU5hbWUsIHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVj
dXRhYmxlKTtcCisgICAgICAgIEV4cGVjdGVkVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZiA9
IGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fIyNuYW1lIyNTb3VyY2UsIGV4ZWN1dGFibGVOYW1l
LCBzXyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSk7XAorICAgICAgICBpZiAoIWYuaGFzX3ZhbHVl
KCkpXAorICAgICAgICAgICAgcmV0dXJuIGY7XAorICAgICAgICBtXyMjbmFtZSMjRXhlY3V0YWJs
ZSA9IFdlYWs8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KGYudmFsdWUoKSwgdGhpcywgJm1f
IyNuYW1lIyNFeGVjdXRhYmxlKTtcCiAgICAgfVwKLSAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1
dGFibGUuZ2V0KCk7XAorICAgIHJldHVybiBFeHBlY3RlZFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpKTtcCiB9CiBKU0NfRk9SRUFDSF9CVUlMVElO
X0NPREUoREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCiAjdW5kZWYgRVhQT1NFX0JVSUxUSU5f
U09VUkNFUwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlcy5oCmluZGV4IDM2OGEzMWI3YWNiNmEzMmM5ZDU4ZTVkZTI4MDFjMjg5YmJmNTJh
MmYuLmNlNTA4YmUzNjQwNGNmMjVmODU5NmExOGZjM2UwZmU1NTliNjgyYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKQEAg
LTI2LDEwICsyNiwxMSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU0NCdWlsdGlucy5o
IgotI2luY2x1ZGUgIlBhcnNlck1vZGVzLmgiCisjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVk
ZSAiU291cmNlQ29kZS5oIgogI2luY2x1ZGUgIldlYWsuaCIKICNpbmNsdWRlICJXZWFrSGFuZGxl
T3duZXIuaCIKKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAK
QEAgLTM3LDEzICszOCwxNSBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNs
YXNzIElkZW50aWZpZXI7CiBjbGFzcyBWTTsKIAordXNpbmcgRXhwZWN0ZWRVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSA9IEV4cGVjdGVkPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgUGFy
c2VyRXJyb3I+OworCiBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXMgZmluYWw6IHByaXZhdGUgV2Vh
a0hhbmRsZU93bmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBCdWlsdGluRXhlY3V0YWJsZXMoVk0mKTsKIAogI2RlZmluZSBFWFBPU0VfQlVJ
TFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5n
dGgpIFwKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwK
K0V4cGVjdGVkVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgbmFtZSMjRXhlY3V0YWJsZSgpOyBc
CiBjb25zdCBTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSB7IHJldHVybiBtXyMjbmFtZSMjU291
cmNlOyB9CiAgICAgCiAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElO
X0VYRUNVVEFCTEVTKQpAQCAtNTEsMTMgKzU0LDE0IEBAIGNvbnN0IFNvdXJjZUNvZGUmIG5hbWUj
I1NvdXJjZSgpIHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KIAogICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5k
LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKIAotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogY3JlYXRlRXhlY3V0YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBjb25z
dCBJZGVudGlmaWVyJiwgQ29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5KTsKKyAgICBz
dGF0aWMgRXhwZWN0ZWRVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBjcmVhdGVFeGVjdXRhYmxl
KFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBDb25zdHJ1Y3Rvcktp
bmQsIENvbnN0cnVjdEFiaWxpdHkpOworICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogY3JlYXRlRXhlY3V0YWJsZU9yQ3Jhc2goVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgY29u
c3QgSWRlbnRpZmllciYsIENvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSk7CiBwcml2
YXRlOgogICAgIHZvaWQgZmluYWxpemUoSGFuZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0KSBv
dmVycmlkZTsKIAogICAgIFZNJiBtX3ZtOwogCi0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVu
dGlmaWVyJiwgQ29uc3RydWN0QWJpbGl0eSk7CisgICAgRXhwZWN0ZWRVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiwgY29u
c3QgSWRlbnRpZmllciYsIENvbnN0cnVjdEFiaWxpdHkpOwogCiAjZGVmaW5lIERFQ0xBUkVfQlVJ
TFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBs
ZW5ndGgpXAogICAgIFNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJjZTsgXApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmlu
ZGV4IGI3MjU1YWM2MjE2ZTA5ZGNlMWFkNGQ3YzY2OWVjNTQ2YTJjYjQ2NzMuLmU4YmJkZTZiNjRh
NzZkN2M0MTI4YmQyZWNjZGNjN2Q0MmU0NWFlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTMxLDYgKzMx
LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAi
RXJyb3IuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVy
LmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckVycm9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJyb3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmOWFjN2FiNDNm
MGNjYzQ3YzRjYzFiYjlkYjBiZmY4ZGYzZDhlMjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckVycm9yLmNwcApAQCAtMCwwICsxLDExOCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgorCisjaW5jbHVkZSAiRXJyb3JIYW5k
bGluZ1Njb3BlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIkhl
YXBDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgSlNDIHsKK0pTT2JqZWN0KiBQYXJzZXJFcnJvcjo6dG9FcnJvck9iamVjdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGludCBvdmVy
cmlkZUxpbmVOdW1iZXIpCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCk7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIEVycm9yTm9uZToK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgY2FzZSBTeW50YXhFcnJvcjogeworICAgICAg
ICBhdXRvIHN5bnRheEVycm9yID0gY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgbV9tZXNzYWdlKTsK
KyAgICAgICAgYXV0byBsaW5lID0gb3ZlcnJpZGVMaW5lTnVtYmVyID09IC0xID8gbV9saW5lIDog
b3ZlcnJpZGVMaW5lTnVtYmVyOworICAgICAgICByZXR1cm4gYWRkRXJyb3JJbmZvKGV4ZWMsIHN5
bnRheEVycm9yLCBsaW5lLCBzb3VyY2UpOworICAgIH0KKyAgICBjYXNlIEV2YWxFcnJvcjoKKyAg
ICAgICAgcmV0dXJuIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIG1fbWVzc2FnZSk7CisgICAgY2Fz
ZSBTdGFja092ZXJmbG93OiB7CisgICAgICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3Bl
KGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVTdGFja092ZXJmbG93
RXJyb3IoZXhlYyk7CisgICAgfQorICAgIGNhc2UgT3V0T2ZNZW1vcnk6CisgICAgICAgIHJldHVy
biBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorCitKU09iamVjdCogUGFyc2VyRXJyb3I6OnRocm93U3RhY2tP
dmVyZmxvd09yT3V0T2ZNZW1vcnkoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIEVycm9yTm9uZToKKyAgICBjYXNlIEV2YWxF
cnJvcjoKKyAgICBjYXNlIFN5bnRheEVycm9yOgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIGNhc2UgU3RhY2tPdmVyZmxvdzoKKyAgICAgICAgcmV0dXJuIHRocm93
U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICBjYXNlIE91dE9mTWVtb3J5Ogor
ICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICB9
CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KK30gLy8gbmFtZXNwYWNlIEpT
QworCituYW1lc3BhY2UgV1RGIHsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0
LCBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJvclR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2gg
KHR5cGUpIHsKKyAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9yTm9uZToKKyAg
ICAgICAgb3V0LnByaW50KCJTeW50YXhFcnJvck5vbmUiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JJcnJlY292ZXJhYmxlOgorICAgICAg
ICBvdXQucHJpbnQoIlN5bnRheEVycm9ySXJyZWNvdmVyYWJsZSIpOworICAgICAgICByZXR1cm47
CisgICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJvclVudGVybWluYXRlZExpdGVy
YWw6CisgICAgICAgIG91dC5wcmludCgiU3ludGF4RXJyb3JVbnRlcm1pbmF0ZWRMaXRlcmFsIik7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9y
UmVjb3ZlcmFibGU6CisgICAgICAgIG91dC5wcmludCgiU3ludGF4RXJyb3JSZWNvdmVyYWJsZSIp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OlBhcnNl
ckVycm9yOjpFcnJvclR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNl
IEpTQzo6UGFyc2VyRXJyb3I6OkVycm9yTm9uZToKKyAgICAgICAgb3V0LnByaW50KCJFcnJvck5v
bmUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6U3RhY2tP
dmVyZmxvdzoKKyAgICAgICAgb3V0LnByaW50KCJTdGFja092ZXJmbG93Iik7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OkV2YWxFcnJvcjoKKyAgICAgICAgb3V0
LnByaW50KCJFdmFsRXJyb3IiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpQYXJz
ZXJFcnJvcjo6T3V0T2ZNZW1vcnk6CisgICAgICAgIG91dC5wcmludCgiT3V0T2ZNZW1vcnkiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3I6
CisgICAgICAgIG91dC5wcmludCgiU3ludGF4RXJyb3IiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorfSAvLyBuYW1lc3BhY2Ug
V1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckVycm9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckVycm9yLmgKaW5kZXggNzg4
M2VmZWQyMjUwMjJjMDIwNmI3ODY0MGI1YTcxNzg5ZDljZWE1Mi4uYzBiYzM5OTRlMWIyYzQ5MDY2
OWE3Yzg4OGM4N2U2NjZhMDhiMmE0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJFcnJvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyRXJyb3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjUsOSArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IkVycm9yLmgiCi0jaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCi0jaW5jbHVkZSAiRXhj
ZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIlBhcnNlclRva2Vucy5oIgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC04NCwzMSArODEsOCBAQCBwdWJsaWM6CiAgICAgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlOyB9CiAgICAgaW50
IGxpbmUoKSBjb25zdCB7IHJldHVybiBtX2xpbmU7IH0KIAotICAgIEpTT2JqZWN0KiB0b0Vycm9y
T2JqZWN0KAotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIAotICAgICAgICBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyID0gLTEpCi0g
ICAgewotICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KTsKLSAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAgY2FzZSBFcnJvck5vbmU6Ci0g
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgY2FzZSBTeW50YXhFcnJvcjoKLSAg
ICAgICAgICAgIHJldHVybiBhZGRFcnJvckluZm8oCi0gICAgICAgICAgICAgICAgZXhlYywgCi0g
ICAgICAgICAgICAgICAgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgbV9tZXNzYWdlKSwgCi0gICAg
ICAgICAgICAgICAgb3ZlcnJpZGVMaW5lTnVtYmVyID09IC0xID8gbV9saW5lIDogb3ZlcnJpZGVM
aW5lTnVtYmVyLCBzb3VyY2UpOwotICAgICAgICBjYXNlIEV2YWxFcnJvcjoKLSAgICAgICAgICAg
IHJldHVybiBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBtX21lc3NhZ2UpOwotICAgICAgICBjYXNl
IFN0YWNrT3ZlcmZsb3c6IHsKLSAgICAgICAgICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNj
b3BlKGdsb2JhbE9iamVjdC0+dm0oKSk7Ci0gICAgICAgICAgICByZXR1cm4gY3JlYXRlU3RhY2tP
dmVyZmxvd0Vycm9yKGV4ZWMpOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgT3V0T2ZNZW1vcnk6
Ci0gICAgICAgICAgICByZXR1cm4gY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKLSAgICAg
ICAgfQotICAgICAgICBDUkFTSCgpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Cisg
ICAgSlNPYmplY3QqIHRvRXJyb3JPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VD
b2RlJiwgaW50IG92ZXJyaWRlTGluZU51bWJlciA9IC0xKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU09iamVjdCogdGhyb3dTdGFja092ZXJmbG93T3JPdXRPZk1lbW9yeShFeGVjU3RhdGUqID0g
bnVsbHB0cik7CiAKIHByaXZhdGU6CiAgICAgSlNUb2tlbiBtX3Rva2VuOwpAQCAtMTIxLDQ4ICs5
NSw2IEBAIHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7Ci0K
LWlubGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpQYXJzZXJF
cnJvcjo6U3ludGF4RXJyb3JUeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAg
Y2FzZSBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJvck5vbmU6Ci0gICAgICAgIG91dC5wcmlu
dCgiU3ludGF4RXJyb3JOb25lIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpTQzo6UGFy
c2VyRXJyb3I6OlN5bnRheEVycm9ySXJyZWNvdmVyYWJsZToKLSAgICAgICAgb3V0LnByaW50KCJT
eW50YXhFcnJvcklycmVjb3ZlcmFibGUiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlND
OjpQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JVbnRlcm1pbmF0ZWRMaXRlcmFsOgotICAgICAgICBv
dXQucHJpbnQoIlN5bnRheEVycm9yVW50ZXJtaW5hdGVkTGl0ZXJhbCIpOwotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJvclJlY292ZXJhYmxlOgot
ICAgICAgICBvdXQucHJpbnQoIlN5bnRheEVycm9yUmVjb3ZlcmFibGUiKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQot
Ci1pbmxpbmUgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6UGFyc2Vy
RXJyb3I6OkVycm9yVHlwZSB0eXBlKQotewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2Ug
SlNDOjpQYXJzZXJFcnJvcjo6RXJyb3JOb25lOgotICAgICAgICBvdXQucHJpbnQoIkVycm9yTm9u
ZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpTdGFja092
ZXJmbG93OgotICAgICAgICBvdXQucHJpbnQoIlN0YWNrT3ZlcmZsb3ciKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6RXZhbEVycm9yOgotICAgICAgICBvdXQu
cHJpbnQoIkV2YWxFcnJvciIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBKU0M6OlBhcnNl
ckVycm9yOjpPdXRPZk1lbW9yeToKLSAgICAgICAgb3V0LnByaW50KCJPdXRPZk1lbW9yeSIpOwot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJvcjoK
LSAgICAgICAgb3V0LnByaW50KCJTeW50YXhFcnJvciIpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KK3ZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9yVHlw
ZSk7Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OlBhcnNlckVycm9yOjpF
cnJvclR5cGUpOwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IDgwMGNm
YTA5NjQxYzBjYTI4MDhmMDU2MDEyZWRhM2QwMjMyMjM3ZjcuLjE3NjE5OTA5YzUzZjRmZDUwY2Iy
ZDM0Y2I0ZDhhMjRiNDcyYjkxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC00MSw3ICs0MSw3IEBA
IHZvaWQgQXN5bmNJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkp
KTsKICAgICBkaWRCZWNvbWVQcm90b3R5cGUoKTsKIAotICAgIEpTRnVuY3Rpb24qIGFzeW5jSXRl
cmF0b3JQcm90b3R5cGVGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgYXN5bmNJdGVy
YXRvclByb3RvdHlwZVN5bWJvbEFzeW5jSXRlcmF0b3JHZXR0ZXJDb2RlR2VuZXJhdG9yKHZtKSwg
Z2xvYmFsT2JqZWN0KTsKKyAgICBKU0Z1bmN0aW9uKiBhc3luY0l0ZXJhdG9yUHJvdG90eXBlRnVu
Y3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGFzeW5jSXRlcmF0b3JQcm90b3R5cGVTeW1i
b2xBc3luY0l0ZXJhdG9yR2V0dGVyQ29kZUdlbmVyYXRvcih2bSkudmFsdWUoKSwgZ2xvYmFsT2Jq
ZWN0KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+YXN5bmNJdGVyYXRvclN5bWJvbCwgYXN5bmNJdGVyYXRvclByb3RvdHlwZUZ1bmN0aW9uLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBl
LmNwcAppbmRleCA3Y2E2OTIzYzIwNzk1OTg0NjNmNmEwMWUxYWM5NWY1MjNmZTRmYjMwLi4xYTRl
MjdkYmIyZDIzOWJmY2YxNmU5OTYxYWNiYmI0ODU4YjJkODU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC02MywxMSAr
NjMsMTEgQEAgdm9pZCBGdW5jdGlvblByb3RvdHlwZTo6YWRkRnVuY3Rpb25Qcm9wZXJ0aWVzKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGcKICAgICBKU0Z1bmN0aW9uKiB0b1N0cmlu
Z0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnBy
b3BlcnR5TmFtZXMtPnRvU3RyaW5nLnN0cmluZygpLCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5n
KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
dG9TdHJpbmcsIHRvU3RyaW5nRnVuY3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAotICAgICphcHBseUZ1bmN0aW9uID0gcHV0RGlyZWN0
QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgdm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXBwbHlQdWJsaWNOYW1lKCksIGZ1bmN0aW9uUHJv
dG90eXBlQXBwbHlDb2RlR2VuZXJhdG9yKHZtKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgICpjYWxsRnVuY3Rpb24gPSBwdXREaXJlY3RC
dWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCB2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jYWxsUHVibGljTmFtZSgpLCBmdW5jdGlvblByb3Rv
dHlwZUNhbGxDb2RlR2VuZXJhdG9yKHZtKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmJpbmQsIGZ1
bmN0aW9uUHJvdG90eXBlQmluZENvZGVHZW5lcmF0b3Iodm0pLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgKmFwcGx5RnVuY3Rpb24gPSBw
dXREaXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0
LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hcHBseVB1YmxpY05hbWUoKSwgZnVu
Y3Rpb25Qcm90b3R5cGVBcHBseUNvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICAqY2FsbEZ1bmN0
aW9uID0gcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2Jh
bE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FsbFB1YmxpY05hbWUo
KSwgZnVuY3Rpb25Qcm90b3R5cGVDYWxsQ29kZUdlbmVyYXRvcih2bSkudmFsdWUoKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERp
cmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIHZt
LnByb3BlcnR5TmFtZXMtPmJpbmQsIGZ1bmN0aW9uUHJvdG90eXBlQmluZENvZGVHZW5lcmF0b3Io
dm0pLnZhbHVlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKIAotICAgICpoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBmdW5jdGlvblByb3RvdHlwZVN5bWJvbEhhc0luc3RhbmNlQ29kZUdlbmVyYXRv
cih2bSksIGdsb2JhbE9iamVjdCk7CisgICAgKmhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24gPSBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uUHJvdG90eXBlU3ltYm9sSGFzSW5zdGFuY2VD
b2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpLCBnbG9iYWxPYmplY3QpOwogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5oYXNJbnN0YW5jZVN5bWJvbCwg
Kmhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24sIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAppbmRleCBhNDgzMTc3M2U5ODE0NWU1YWI4NmNhM2JjNjcyZjIyYzhhZjVl
Y2NiLi5kNzczMTg1Y2FiNzU5MTI1ZTZlMDgxNWNmMjE3MDdkNTU4N2M0ODg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC00NDIs
MjQgKzQ0MiwyNCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAgICAg
fSk7CiAgICAgbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24uaW5pdExhdGVyKAogICAgICAgICBb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKLSAgICAgICAgICAgIGlu
aXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBhcnJheVByb3RvdHlwZVZhbHVlc0Nv
ZGVHZW5lcmF0b3IoaW5pdC52bSksIGluaXQub3duZXIpKTsKKyAgICAgICAgICAgIGluaXQuc2V0
KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBhcnJheVByb3RvdHlwZVZhbHVlc0NvZGVHZW5l
cmF0b3IoaW5pdC52bSkudmFsdWUoKSwgaW5pdC5vd25lcikpOwogICAgICAgICB9KTsKICAgICBt
X2luaXRpYWxpemVQcm9taXNlRnVuY3Rpb24uaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKLSAgICAgICAgICAgIGluaXQuc2V0KEpT
RnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBwcm9taXNlT3BlcmF0aW9uc0luaXRpYWxpemVQcm9t
aXNlQ29kZUdlbmVyYXRvcihpbml0LnZtKSwgaW5pdC5vd25lcikpOworICAgICAgICAgICAgaW5p
dC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIHByb21pc2VPcGVyYXRpb25zSW5pdGlh
bGl6ZVByb21pc2VDb2RlR2VuZXJhdG9yKGluaXQudm0pLnZhbHVlKCksIGluaXQub3duZXIpKTsK
ICAgICAgICAgfSk7CiAKICAgICBtX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbi5pbml0TGF0ZXIo
CiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Z1bmN0aW9uPiYgaW5pdCkgewotICAg
ICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGl0ZXJhdG9ySGVs
cGVyc1BlcmZvcm1JdGVyYXRpb25Db2RlR2VuZXJhdG9yKGluaXQudm0pLCBpbml0Lm93bmVyKSk7
CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwgaXRlcmF0
b3JIZWxwZXJzUGVyZm9ybUl0ZXJhdGlvbkNvZGVHZW5lcmF0b3IoaW5pdC52bSkudmFsdWUoKSwg
aW5pdC5vd25lcikpOwogICAgICAgICB9KTsKIAogICAgIG1fcHJvbWlzZVJlc29sdmVGdW5jdGlv
bi5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Z1bmN0aW9uPiYg
aW5pdCkgewotICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0s
IHByb21pc2VDb25zdHJ1Y3RvclJlc29sdmVDb2RlR2VuZXJhdG9yKGluaXQudm0pLCBpbml0Lm93
bmVyKSk7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwg
cHJvbWlzZUNvbnN0cnVjdG9yUmVzb2x2ZUNvZGVHZW5lcmF0b3IoaW5pdC52bSkudmFsdWUoKSwg
aW5pdC5vd25lcikpOwogICAgICAgICB9KTsKIAotICAgIG1fbmV3UHJvbWlzZUNhcGFiaWxpdHlG
dW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgcHJvbWlzZU9wZXJh
dGlvbnNOZXdQcm9taXNlQ2FwYWJpbGl0eUNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSk7CisgICAg
bV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBwcm9taXNlT3BlcmF0aW9uc05ld1Byb21pc2VDYXBhYmlsaXR5Q29kZUdlbmVy
YXRvcih2bSkudmFsdWUoKSwgdGhpcykpOwogICAgIG1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNl
U3ltYm9sRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKTsK
ICAgICBtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyLmluaXRMYXRlcigKICAgICAgICAgW10g
KGNvbnN0IEluaXRpYWxpemVyPEdldHRlclNldHRlcj4mIGluaXQpIHsKQEAgLTQ5MCw3ICs0OTAs
NyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX2Z1bmN0aW9uUHJv
dG90eXBlLT5pbml0UmVzdHJpY3RlZFByb3BlcnRpZXMoZXhlYywgdGhpcyk7CiAKICAgICBtX3Nw
ZWNpZXNHZXR0ZXJTZXR0ZXIuc2V0KHZtLCB0aGlzLCBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwg
dGhpcykpOwotICAgIG1fc3BlY2llc0dldHRlclNldHRlci0+c2V0R2V0dGVyKHZtLCB0aGlzLCBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9wZXJhdGlvbnNTcGVjaWVzR2V0dGVyQ29kZUdl
bmVyYXRvcih2bSksIHRoaXMpKTsKKyAgICBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXItPnNldEdldHRl
cih2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPcGVyYXRpb25zU3BlY2ll
c0dldHRlckNvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIHRoaXMpKTsKIAogICAgIG1fdHlwZWRB
cnJheVByb3RvLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGU+JiBpbml0KSB7CkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgIFtdIChMYXp5Q2xhc3NTdHJ1Y3R1
cmU6OkluaXRpYWxpemVyJiBpbml0KSB7IFwKICAgICAgICAgICAgIGluaXQuc2V0UHJvdG90eXBl
KEpTICMjIHR5cGUgIyMgQXJyYXlQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBpbml0Lmdsb2Jh
bCwgSlMgIyMgdHlwZSAjIyBBcnJheVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0s
IGluaXQuZ2xvYmFsLCBpbml0Lmdsb2JhbC0+bV90eXBlZEFycmF5UHJvdG8uZ2V0KGluaXQuZ2xv
YmFsKSkpKTsgXAogICAgICAgICAgICAgaW5pdC5zZXRTdHJ1Y3R1cmUoSlMgIyMgdHlwZSAjIyBB
cnJheTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBpbml0LnByb3RvdHlw
ZSkpOyBcCi0gICAgICAgICAgICBpbml0LnNldENvbnN0cnVjdG9yKEpTICMjIHR5cGUgIyMgQXJy
YXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBKUyAjIyB0eXBlICMj
IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lmdsb2JhbCwg
aW5pdC5nbG9iYWwtPm1fdHlwZWRBcnJheVN1cGVyQ29uc3RydWN0b3IuZ2V0KGluaXQuZ2xvYmFs
KSksIGluaXQucHJvdG90eXBlLCBBU0NJSUxpdGVyYWwoI3R5cGUgIkFycmF5IiksIHR5cGVkQXJy
YXlDb25zdHJ1Y3RvckFsbG9jYXRlICMjIHR5cGUgIyMgQXJyYXlDb2RlR2VuZXJhdG9yKGluaXQu
dm0pKSk7IFwKKyAgICAgICAgICAgIGluaXQuc2V0Q29uc3RydWN0b3IoSlMgIyMgdHlwZSAjIyBB
cnJheUNvbnN0cnVjdG9yOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIEpTICMjIHR5cGUg
IyMgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFs
LCBpbml0Lmdsb2JhbC0+bV90eXBlZEFycmF5U3VwZXJDb25zdHJ1Y3Rvci5nZXQoaW5pdC5nbG9i
YWwpKSwgaW5pdC5wcm90b3R5cGUsIEFTQ0lJTGl0ZXJhbCgjdHlwZSAiQXJyYXkiKSwgdHlwZWRB
cnJheUNvbnN0cnVjdG9yQWxsb2NhdGUgIyMgdHlwZSAjIyBBcnJheUNvZGVHZW5lcmF0b3IoaW5p
dC52bSkudmFsdWUoKSkpOyBcCiAgICAgICAgICAgICBpbml0Lmdsb2JhbC0+cHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24oaW5pdC52bSwgaW5pdC52bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS50eXBlICMjIEFycmF5UHJpdmF0ZU5hbWUoKSwgaW5pdC5jb25zdHJ1Y3Rvciwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOyBcCiAgICAgICAg
IH0pOwogICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhJ
TklUX1RZUEVEX0FSUkFZX0xBVEVSKQpAQCAtODM3LDcgKzgzNyw3IEBAIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMg
Q29uc3RydWN0CiAgICAgSlNPYmplY3QqIHJlZ0V4cFN5bWJvbFJlcGxhY2UgPSBhc09iamVjdCht
X3JlZ0V4cFByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yZXBsYWNl
U3ltYm9sKS5hc0NlbGwoKSk7CiAgICAgbV9yZWdFeHBQcm90b1N5bWJvbFJlcGxhY2Uuc2V0KHZt
LCB0aGlzLCByZWdFeHBTeW1ib2xSZXBsYWNlKTsKIAotI2RlZmluZSBDUkVBVEVfUFJJVkFURV9H
TE9CQUxfRlVOQ1RJT04obmFtZSwgY29kZSkgSlNGdW5jdGlvbiogbmFtZSAjIyBQcml2YXRlRnVu
Y3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGUgIyMgQ29kZUdlbmVyYXRvcih2bSks
IHRoaXMpOworI2RlZmluZSBDUkVBVEVfUFJJVkFURV9HTE9CQUxfRlVOQ1RJT04obmFtZSwgY29k
ZSkgSlNGdW5jdGlvbiogbmFtZSAjIyBQcml2YXRlRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIGNvZGUgIyMgQ29kZUdlbmVyYXRvcih2bSkudmFsdWUoKSwgdGhpcyk7CiAgICAgSlND
X0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9QUklWQVRFX0dMT0JBTF9OQU1FKENSRUFURV9QUklW
QVRFX0dMT0JBTF9GVU5DVElPTikKICN1bmRlZiBDUkVBVEVfUFJJVkFURV9HTE9CQUxfRlVOQ1RJ
T04KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDQy
Yzg4OGU2YzQ5NGU2ZDQ5NzNlNmFhYzM2OTMxYzgzYmM5YWM5MGQuLjZhZDZhMzA1YWVkMjlkM2E3
ZjU5OGJmYzJiZDkwMDYzMGE5MTVhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAKQEAgLTIwMjksMTIgKzIwMjksMTcgQEAgYm9vbCBKU09iamVjdDo6Z2V0
UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUm
IHJlc3UKICAgICByZXR1cm4gIXJlc3VsdC5pc1N0cmluZygpOwogfQogCi1ib29sIEpTT2JqZWN0
OjpnZXRPd25TdGF0aWNQcm9wZXJ0eVNsb3QoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTT2JqZWN0OjpnZXRPd25TdGF0aWNQcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgZm9yIChhdXRvKiBpbmZvID0gY2xh
c3NJbmZvKHZtKTsgaW5mbzsgaW5mbyA9IGluZm8tPnBhcmVudENsYXNzKSB7CiAgICAgICAgIGlm
IChhdXRvKiB0YWJsZSA9IGluZm8tPnN0YXRpY1Byb3BIYXNoVGFibGUpIHsKLSAgICAgICAgICAg
IGlmIChnZXRTdGF0aWNQcm9wZXJ0eVNsb3RGcm9tVGFibGUodm0sIHRhYmxlLT5jbGFzc0ZvclRo
aXMsICp0YWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICAgICAgICAgIGlmIChn
ZXRTdGF0aWNQcm9wZXJ0eVNsb3RGcm9tVGFibGUoZXhlYywgdGFibGUtPmNsYXNzRm9yVGhpcywg
KnRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7CisgICAgICAgICAgICAgICAgRVhD
RVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZmFsc2UpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTIz
MjAsNiArMjMyNSw3IEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5QWxsU3RhdGljUHJvcGVydGllcyhF
eGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgQVNTRVJUKCFzdGF0aWNQcm9wZXJ0aWVzUmVpZmllZCgp
KTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIElmIHRoaXMgb2JqZWN0J3MgQ2xhc3NJbmZvIGhhcyBu
byBzdGF0aWMgcHJvcGVydGllcywgdGhlbiBub3RoaW5nIHRvIHJlaWZ5IQogICAgIC8vIFdlIGNh
biBzYWZlbHkgc2V0IHRoZSBmbGFnIHRvIGF2b2lkIHRoZSBleHBlbnNpdmUgY2hlY2sgYWdhaW4g
aW4gdGhlIGZ1dHVyZS4KQEAgLTIzNDAsOCArMjM0NiwxMCBAQCB2b2lkIEpTT2JqZWN0OjpyZWlm
eUFsbFN0YXRpY1Byb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgdW5zaWdu
ZWQgYXR0cmlidXRlczsKICAgICAgICAgICAgIGF1dG8ga2V5ID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sIHZhbHVlLm1fa2V5KTsKICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCA9IGdldERpcmVjdE9mZnNldCh2bSwga2V5LCBhdHRyaWJ1dGVzKTsKLSAgICAgICAgICAgIGlm
ICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQotICAgICAgICAgICAgICAgIHJlaWZ5U3RhdGljUHJv
cGVydHkodm0sIGhhc2hUYWJsZS0+Y2xhc3NGb3JUaGlzLCBrZXksIHZhbHVlLCAqdGhpcyk7Cisg
ICAgICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgeworICAgICAgICAgICAgICAg
IHJlaWZ5U3RhdGljUHJvcGVydHkodm0sIGV4ZWMsIGhhc2hUYWJsZS0+Y2xhc3NGb3JUaGlzLCBr
ZXksIHZhbHVlLCAqdGhpcyk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggYzJlYjhlNjkzNjQyOWY0ZjZh
Y2VmNzc3NTRiZjYzNmQzM2VhMzY3NC4uMDI0NWU1YTZlZTgwYzhhNWQ3OTMxMzcwODY2NTIyMGJk
MzJmNjExNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC05
NCw3ICs5NCw3IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgZnJpZW5k
IGNsYXNzIEpTQ2VsbDsKICAgICBmcmllbmQgY2xhc3MgSlNGaW5hbE9iamVjdDsKICAgICBmcmll
bmQgY2xhc3MgTWFya2VkQmxvY2s7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgZnJpZW5kIGJvb2wg
c2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoVk0mLCBjb25zdCBIYXNoVGFibGVWYWx1ZSosIEpTT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBmcmllbmQgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqLCBjb25zdCBI
YXNoVGFibGVWYWx1ZSosIEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
IAogICAgIGVudW0gUHV0TW9kZSB7CiAgICAgICAgIFB1dE1vZGVQdXQsCkBAIC0xMDIyLDExICsx
MDIyLDExIEBAIHByaXZhdGU6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgTkVWRVJfSU5MSU5FIGJv
b2wgcHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpOwogCiAgICAgYm9vbCBnZXROb25JbmRleFByb3BlcnR5U2xvdChFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIGJvb2wgZ2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eVNsb3QoVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOworICAgIGJvb2wgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgU3Ry
dWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90JiwgSlNDZWxsKiwg
dW5zaWduZWQsIFByb3BlcnR5T2Zmc2V0KTsKICAgICB2b2lkIGZpbGxDdXN0b21HZXR0ZXJQcm9w
ZXJ0eVNsb3QoVk0mLCBQcm9wZXJ0eVNsb3QmLCBDdXN0b21HZXR0ZXJTZXR0ZXIqLCB1bnNpZ25l
ZCwgU3RydWN0dXJlKik7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGdldE93blN0YXRp
Y1Byb3BlcnR5U2xvdChWTSYsIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRPd25TdGF0aWNQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdHJ1Y3QgUHJvcGVydHlIYXNoRW50
cnkgewogICAgICAgICBjb25zdCBIYXNoVGFibGUqIHRhYmxlOwogICAgICAgICBjb25zdCBIYXNo
VGFibGVWYWx1ZSogdmFsdWU7CkBAIC0xMzEzLDE0ICsxMzEzLDE1IEBAIGlubGluZSBKU1ZhbHVl
IEpTT2JqZWN0OjpnZXRQcm90b3R5cGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAKIC8vIEl0
IGlzIHNhZmUgdG8gY2FsbCB0aGlzIG1ldGhvZCB3aXRoIGEgUHJvcGVydHlOYW1lIHRoYXQgaXMg
YWN0dWFsbHkgYW4gaW5kZXgsCiAvLyBidXQgaWYgc28gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNl
IChkb2Vzbid0IHNlYXJjaCBpbmRleCBzdG9yYWdlKS4KLUFMV0FZU19JTkxJTkUgYm9vbCBKU09i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorQUxX
QVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdChFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVj
dHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwogICAgIGlmICghaXNWYWxp
ZE9mZnNldChvZmZzZXQpKSB7CiAgICAgICAgIGlmICghVHlwZUluZm86Omhhc1N0YXRpY1Byb3Bl
cnR5VGFibGUoaW5saW5lVHlwZUZsYWdzKCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICByZXR1cm4gZ2V0T3duU3RhdGljUHJvcGVydHlTbG90KHZtLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOworICAgICAgICByZXR1cm4gZ2V0T3duU3RhdGljUHJvcGVydHlTbG90KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIAogICAgIC8vIGdldFByb3BlcnR5U2xvdCBy
ZWxpZXMgb24gdGhpcyBtZXRob2QgbmV2ZXIgcmV0dXJuaW5nIGluZGV4IHByb3BlcnRpZXMhCkBA
IC0xMzcwLDE5ICsxMzcxLDI0IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU09iamVjdDo6ZmlsbEN1
c3RvbUdldHRlclByb3BlcnR5U2xvdChWTSYgdm0sIFByb3BlcnR5U2xvdCYKIEFMV0FZU19JTkxJ
TkUgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gb2JqZWN0LT5z
dHJ1Y3R1cmUodm0pOwotICAgIGlmIChvYmplY3QtPmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90
KHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgaWYgKG9iamVjdC0+Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QoZXhlYywgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpKSB7CisgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUlu
ZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiBnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KG9iamVjdCwgZXhlYywgaW5kZXgudmFsdWUoKSwgc2xvdCk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCiAvLyBJdCBtYXkgc2VlbSBjcmF6eSB0byBpbmxpbmUgYSBmdW5jdGlvbiB0aGlzIGxh
cmdlIGJ1dCBpdCBtYWtlcyBhIGJpZyBkaWZmZXJlbmNlCi0vLyBzaW5jZSB0aGlzIGlzIGZ1bmN0
aW9uIHZlcnkgaG90IGluIHZhcmlhYmxlIGxvb2t1cAorLy8gc2luY2UgdGhpcyBmdW5jdGlvbiBp
cyB2ZXJ5IGhvdCBpbiB2YXJpYWJsZSBsb29rdXAKIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVj
dDo6Z2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8mIHN0cnVj
dHVyZUlEVGFibGUgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKTsKICAgICBKU09iamVjdCog
b2JqZWN0ID0gdGhpczsKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtMTM5NSwxMiArMTQwMSwxNiBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZQogICAgICAgICAgICAgICAgIHJldHVybiBnZXRQcm9w
ZXJ0eVNsb3QoZXhlYywgaW5kZXgudmFsdWUoKSwgc2xvdCk7CiAgICAgICAgICAgICAvLyBTYWZl
IHRvIGNvbnRpbnVlIHNlYXJjaGluZyBmcm9tIGN1cnJlbnQgcG9zaXRpb247IGNhbGwgZ2V0Tm9u
SW5kZXhQcm9wZXJ0eVNsb3QgdG8gYXZvaWQKICAgICAgICAgICAgIC8vIHBhcnNpbmcgdGhlIGlu
dCBhZ2Fpbi4KKyAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAgICAgIHJldHVy
biBvYmplY3QtPmdldE5vbkluZGV4UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKG9iamVjdC0+dHlwZSgpICE9IFByb3h5T2Jq
ZWN0VHlwZSk7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3RydWN0dXJlSURUYWJs
ZS5nZXQob2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKLSAgICAgICAgaWYgKG9iamVjdC0+Z2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eVNsb3Qodm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzbG90KSkK
KyAgICAgICAgaWYgKG9iamVjdC0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QoZXhlYywgc3Ry
dWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7CisgICAgICAgICAgICBFWENFUFRJT05fQVNT
RVJUKCFzY29wZS5leGNlcHRpb24oKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAg
IC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgbG9vayBsaWtlIGl0J3MgZm9sbG93aW5nIHRoZSBzcGVj
aWZpY2F0aW9uOgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTcyNTcyCiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gc3RydWN0dXJlLT5zdG9y
ZWRQcm90b3R5cGUob2JqZWN0KTsKQEAgLTE2MDEsNyArMTYxMSw3IEBAIEpTX0VYUE9SVF9QUklW
QVRFIE5FVkVSX0lOTElORSBib29sIG9yZGluYXJ5U2V0U2xvdyhFeGVjU3RhdGUqLCBKU09iamVj
dCosIFByb3BlCiAKICNkZWZpbmUgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKGpzTmFtZSwgZ2VuZXJhdG9yTmFtZSwgYXR0cmlidXRlcykgXAogICAgIHB1dERpcmVjdEJ1
aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKFwKLSAgICAgICAgdm0sIGdsb2JhbE9iamVj
dCwgbWFrZUlkZW50aWZpZXIodm0sIChqc05hbWUpKSwgKGdlbmVyYXRvck5hbWUpKHZtKSwgKGF0
dHJpYnV0ZXMpKQorICAgICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBtYWtlSWRlbnRpZmllcih2bSwg
KGpzTmFtZSkpLCAoZ2VuZXJhdG9yTmFtZSkodm0pLnZhbHVlKCksIChhdHRyaWJ1dGVzKSkKIAog
Ly8gSGVscGVyIGZvciBkZWZpbmluZyBuYXRpdmUgZ2V0dGVycyBvbiBwcm9wZXJ0aWVzLgogI2Rl
ZmluZSBKU0NfTkFUSVZFX0lOVFJJTlNJQ19HRVRURVIoanNOYW1lLCBjcHBOYW1lLCBhdHRyaWJ1
dGVzLCBpbnRyaW5zaWMpICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0SW5saW5lcy5oCmluZGV4IDVlMjcwMWYxN2E0MzNlMzJkMWJjNmU5Yzg3YTRhNTU4OWQ0
ZjNmOGYuLjNmMDlhODFiMDVmNjA3OWRiNzJmYzYzYzcyZThkNTllOWY1ZDY5NjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCkBAIC0xNDAs
OCArMTQwLDExIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0Tm9uSW5kZXhQcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiAgICAgd2hpbGUgKHRydWUpIHsK
ICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVJRFRhYmxlLmdldChvYmpl
Y3QtPnN0cnVjdHVyZUlEKCkpOwogICAgICAgICBpZiAoTElLRUxZKCFUeXBlSW5mbzo6b3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90KG9iamVjdC0+aW5saW5lVHlwZUZsYWdzKCkpKSkgewotICAg
ICAgICAgICAgaWYgKG9iamVjdC0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3Qodm0sIHN0cnVj
dHVyZSwgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICAgICAgICAgIGlmIChvYmplY3QtPmdldE93
bk5vbkluZGV4UHJvcGVydHlTbG90KGV4ZWMsIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzbG90
KSkgeworICAgICAgICAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigp
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIGJvb2wgaGFzU2xvdCA9IHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPm1ldGhv
ZFRhYmxlLmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCmluZGV4IDNmN2YzZjE0OTdkMGFh
MmM5ZTUzNDRlN2EzYThlZjQwYjE2MGY4MGMuLjBhOTlkODBmOWIxNGI2N2EwN2U3YzAyMjgxMDlh
ZTA4NmM3OTAzM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3Bw
CkBAIC0xNTYsNiArMTU2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGFic3RyYWN0QWNjZXNzKEV4
ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIGNvbnN0IElkZW50aWYKIAogICAgICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpWTUlucXVpcnkpOwogICAgICAgICBib29sIGhhc093blByb3BlcnR5ID0gZ2xvYmFs
T2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBleGVjLCBpZGVudCwgc2xv
dCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
ICAgICBpZiAoIWhhc093blByb3BlcnR5KSB7CiAgICAgICAgICAgICBvcCA9IFJlc29sdmVPcCht
YWtlVHlwZShVbnJlc29sdmVkUHJvcGVydHksIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKSwgMCwg
MCwgMCwgMCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5j
cHAKaW5kZXggNzViMGMxMWYzNmUyNmE3YmE0OTM0MTU4NTUyNjM4YjgxZTE1ZjFlMi4uODdmZGEz
YWY4ZDkzMDM3ZWFjZDJkYTI2ODdlYTI1MDQwNzk2NmRlZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5j
cHAKQEAgLTMzMCw3ICszMzAsNyBAQCB2b2lkIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIHRvU3Ry
aW5nVGFnQWNjZXNzb3ItPnNldEdldHRlcih2bSwgZ2xvYmFsT2JqZWN0LCB0b1N0cmluZ1RhZ0Z1
bmN0aW9uKTsKICAgICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwgdG9TdHJpbmdUYWdBY2Nlc3NvciwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkFjY2Vzc29yKTsKIAotICAgIEpTRnVuY3Rpb24qIHZhbHVlc0Z1bmN0aW9uID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0eXBlZEFycmF5UHJvdG90eXBlVmFsdWVzQ29kZUdlbmVy
YXRvcih2bSksIGdsb2JhbE9iamVjdCk7CisgICAgSlNGdW5jdGlvbiogdmFsdWVzRnVuY3Rpb24g
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHR5cGVkQXJyYXlQcm90b3R5cGVWYWx1ZXNDb2RlR2Vu
ZXJhdG9yKHZtKS52YWx1ZSgpLCBnbG9iYWxPYmplY3QpOwogCiAgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1
YmxpY05hbWUoKSwgdmFsdWVzRnVuY3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIHZhbHVlc0Z1bmN0aW9uLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAppbmRleCA5NjZjNzFlYjEwYThhODQ4NDdl
ODdjYjYxMjNlNDA4NzUxNzhiZjA2Li44ZWFjMGY5NGM1NzYxNDgxYTA3ZjMwYjJiMmE1NWM2YzQ4
OTU3MmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKQEAgLTMz
LDcgKzMzLDcgQEAgdm9pZCByZWlmeVN0YXRpY0FjY2Vzc29yKFZNJiB2bSwgY29uc3QgSGFzaFRh
YmxlVmFsdWUmIHZhbHVlLCBKU09iamVjdCYgdGhpc09iamUKICAgICBpZiAodmFsdWUuYWNjZXNz
b3JHZXR0ZXIoKSkgewogICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG51bGxwdHI7CiAg
ICAgICAgIGlmICh2YWx1ZS5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRp
bikKLSAgICAgICAgICAgIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB2YWx1ZS5i
dWlsdGluQWNjZXNzb3JHZXR0ZXJHZW5lcmF0b3IoKSh2bSksIGdsb2JhbE9iamVjdCk7CisgICAg
ICAgICAgICBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdmFsdWUuYnVpbHRpbkFj
Y2Vzc29yR2V0dGVyR2VuZXJhdG9yKCkodm0pLnZhbHVlKCksIGdsb2JhbE9iamVjdCk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgU3RyaW5nIGdldHRlck5hbWUgPSB0cnlNYWtlU3RyaW5n
KEFTQ0lJTGl0ZXJhbCgiZ2V0ICIpLCBTdHJpbmcoKnByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkp
KTsKICAgICAgICAgICAgIGlmICghZ2V0dGVyTmFtZSkKQEAgLTQ1LDggKzQ1LDEwIEBAIHZvaWQg
cmVpZnlTdGF0aWNBY2Nlc3NvcihWTSYgdm0sIGNvbnN0IEhhc2hUYWJsZVZhbHVlJiB2YWx1ZSwg
SlNPYmplY3QmIHRoaXNPYmplCiAgICAgdGhpc09iamVjdC5wdXREaXJlY3ROb25JbmRleEFjY2Vz
c29yKHZtLCBwcm9wZXJ0eU5hbWUsIGFjY2Vzc29yLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHZh
bHVlLmF0dHJpYnV0ZXMoKSkpOwogfQogCi1ib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KFZN
JiB2bSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBl
bnRyeSwgSlNPYmplY3QqIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgSGFzaFRhYmxlVmFsdWUq
IGVudHJ5LCBKU09iamVjdCogdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEFTU0VSVCh0aGlzT2JqZWN0
LT5nbG9iYWxPYmplY3QoKSk7CiAgICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbk9yRnVuY3Rpb25PckFjY2Vzc29yT3JMYXp5UHJvcGVydHkp
OwogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CkBAIC01OSw3ICs2MSw4IEBAIGJvb2wgc2V0VXBT
dGF0aWNGdW5jdGlvblNsb3QoVk0mIHZtLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29u
c3QgSGFzaFRhYmxlCiAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5zdGF0aWNQcm9wZXJ0aWVzUmVp
ZmllZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlaWZ5U3RhdGlj
UHJvcGVydHkodm0sIGNsYXNzSW5mbywgcHJvcGVydHlOYW1lLCAqZW50cnksICp0aGlzT2JqZWN0
KTsKKyAgICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgZXhlYywgY2xhc3NJbmZvLCBwcm9w
ZXJ0eU5hbWUsICplbnRyeSwgKnRoaXNPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7CiAKICAgICAgICAgb2Zmc2V0ID0gdGhpc09iamVjdC0+Z2V0RGly
ZWN0T2Zmc2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwogICAgICAgICBpZiAoIWlz
VmFsaWRPZmZzZXQob2Zmc2V0KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAu
aAppbmRleCBiZmVlNTFlMGIxYWNiNDQ2YTM1MDgyYjQ1YmYwMWU5MzhhNjg4YWY3Li42NmU3YTEx
ZjdjMjY1ZWUyMmI4YjM4ODg1ZjU3ZDYxMmJkNjQ3MGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Mb29rdXAuaApAQCAtMzEsMTAgKzMxLDEyIEBACiAjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiTGF6eVByb3BlcnR5
LmgiCisjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIKICNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIK
ICNpbmNsdWRlICJQdXRQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJUeXBlRXJyb3IuaCIKICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKIApAQCAtNDcsNyArNDksNyBAQCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRl
eCB7CiAvLyBpZS4gdHlwZWRlZiBKU1ZhbHVlICgqR2V0RnVuY3Rpb24pKEV4ZWNTdGF0ZSosIEpT
T2JqZWN0KiBiYXNlT2JqZWN0KQogdHlwZWRlZiBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBH
ZXRGdW5jdGlvbjsKIHR5cGVkZWYgUHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmMgUHV0RnVu
Y3Rpb247Ci10eXBlZGVmIEZ1bmN0aW9uRXhlY3V0YWJsZSogKCpCdWlsdGluR2VuZXJhdG9yKShW
TSYpOwordHlwZWRlZiBFeHBlY3RlZDxGdW5jdGlvbkV4ZWN1dGFibGUqLCBQYXJzZXJFcnJvcj4g
KCpCdWlsdGluR2VuZXJhdG9yKShWTSYpOwogdHlwZWRlZiBKU1ZhbHVlICgqTGF6eVByb3BlcnR5
Q2FsbGJhY2spKFZNJiwgSlNPYmplY3QqKTsKIAogLy8gSGFzaCB0YWJsZSBnZW5lcmF0ZWQgYnkg
dGhlIGNyZWF0ZV9oYXNoX3RhYmxlIHNjcmlwdC4KQEAgLTIwMyw3ICsyMDUsNyBAQCBzdHJ1Y3Qg
SGFzaFRhYmxlIHsKICAgICB9CiB9OwogCi1KU19FWFBPUlRfUFJJVkFURSBib29sIHNldFVwU3Rh
dGljRnVuY3Rpb25TbG90KFZNJiwgY29uc3QgQ2xhc3NJbmZvKiwgY29uc3QgSGFzaFRhYmxlVmFs
dWUqLCBKU09iamVjdCogdGhpc09iamVjdCwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
K0pTX0VYUE9SVF9QUklWQVRFIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRl
KiwgY29uc3QgQ2xhc3NJbmZvKiwgY29uc3QgSGFzaFRhYmxlVmFsdWUqLCBKU09iamVjdCogdGhp
c09iamVjdCwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgcmVpZnlTdGF0aWNBY2Nlc3NvcihWTSYsIGNvbnN0IEhhc2hUYWJsZVZhbHVlJiwgSlNP
YmplY3QmIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSk7CiAKIGlubGluZSBCdWlsdGluR2VuZXJh
dG9yIEhhc2hUYWJsZVZhbHVlOjpidWlsdGluQWNjZXNzb3JHZXR0ZXJHZW5lcmF0b3IoKSBjb25z
dApAQCAtMjIwLDcgKzIyMiw3IEBAIGlubGluZSBCdWlsdGluR2VuZXJhdG9yIEhhc2hUYWJsZVZh
bHVlOjpidWlsdGluQWNjZXNzb3JTZXR0ZXJHZW5lcmF0b3IoKSBjb25zdAogICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PEJ1aWx0aW5HZW5lcmF0b3I+KG1fdmFsdWVzLnZhbHVlMik7CiB9CiAK
LWlubGluZSBib29sIGdldFN0YXRpY1Byb3BlcnR5U2xvdEZyb21UYWJsZShWTSYgdm0sIGNvbnN0
IENsYXNzSW5mbyogY2xhc3NJbmZvLCBjb25zdCBIYXNoVGFibGUmIHRhYmxlLCBKU09iamVjdCog
dGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQoraW5saW5lIGJvb2wgZ2V0U3RhdGljUHJvcGVydHlTbG90RnJvbVRhYmxlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGNvbnN0IEhhc2hUYWJsZSYgdGFibGUs
IEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgaWYgKHRoaXNPYmplY3QtPnN0YXRpY1Byb3BlcnRpZXNSZWlm
aWVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMCw3ICsyMzIsNyBAQCBpbmxpbmUg
Ym9vbCBnZXRTdGF0aWNQcm9wZXJ0eVNsb3RGcm9tVGFibGUoVk0mIHZtLCBjb25zdCBDbGFzc0lu
Zm8qIGNsYXNzSW5mbywgYwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoZW50cnkt
PmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpCdWlsdGluT3JGdW5jdGlvbk9yQWNj
ZXNzb3JPckxhenlQcm9wZXJ0eSkKLSAgICAgICAgcmV0dXJuIHNldFVwU3RhdGljRnVuY3Rpb25T
bG90KHZtLCBjbGFzc0luZm8sIGVudHJ5LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OworICAgICAgICByZXR1cm4gc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZXhlYywgY2xhc3NJbmZv
LCBlbnRyeSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIAogICAgIGlmIChlbnRy
eS0+YXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlcikgewog
ICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUo
ZW50cnktPmF0dHJpYnV0ZXMoKSksIGpzTnVtYmVyKGVudHJ5LT5jb25zdGFudEludGVnZXIoKSkp
OwpAQCAtMzE5LDEzICszMjEsMjQgQEAgaW5saW5lIGJvb2wgbG9va3VwUHV0KEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGJhc2UKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotaW5saW5lIHZvaWQgcmVpZnlTdGF0aWNQcm9wZXJ0eShWTSYgdm0sIGNv
bnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFt
ZSwgY29uc3QgSGFzaFRhYmxlVmFsdWUmIHZhbHVlLCBKU09iamVjdCYgdGhpc09iaikKK2lubGlu
ZSB2b2lkIHJlaWZ5U3RhdGljUHJvcGVydHkoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWNJZkF2YWls
YWJsZSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJv
cGVydHlOYW1lLCBjb25zdCBIYXNoVGFibGVWYWx1ZSYgdmFsdWUsIEpTT2JqZWN0JiB0aGlzT2Jq
KQogeworICAgIEFTU0VSVChleGVjSWZBdmFpbGFibGUgPT0gbnVsbHB0ciB8fCAmdm0gPT0gJihl
eGVjSWZBdmFpbGFibGUtPnZtKCkpKTsKKwogICAgIGlmICh2YWx1ZS5hdHRyaWJ1dGVzKCkgJiBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbikgewogICAgICAgICBpZiAodmFsdWUuYXR0cmlidXRl
cygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKQogICAgICAgICAgICAgcmVpZnlTdGF0
aWNBY2Nlc3Nvcih2bSwgdmFsdWUsIHRoaXNPYmosIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHRoaXNPYmoucHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKHZtLCB0aGlz
T2JqLmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLmJ1aWx0aW5HZW5lcmF0b3Io
KSh2bSksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUodmFsdWUuYXR0cmlidXRlcygpKSk7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgRXhwZWN0ZWQ8RnVuY3Rpb25FeGVjdXRhYmxlKiwgUGFy
c2VyRXJyb3I+IGYgPSB2YWx1ZS5idWlsdGluR2VuZXJhdG9yKCkodm0pOworICAgICAgICAgICAg
aWYgKGYuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICAgICAgdGhpc09iai5wdXREaXJlY3RCdWls
dGluRnVuY3Rpb24odm0sIHRoaXNPYmouZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZi52
YWx1ZSgpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHZhbHVlLmF0dHJpYnV0ZXMoKSkpOworICAg
ICAgICAgICAgZWxzZSBpZiAoZXhlY0lmQXZhaWxhYmxlKQorICAgICAgICAgICAgICAgIGYuZXJy
b3IoKS50aHJvd1N0YWNrT3ZlcmZsb3dPck91dE9mTWVtb3J5KGV4ZWNJZkF2YWlsYWJsZSk7Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIkZhdGFsIHBhcnNl
ciBlcnJvciAocHJvYmFibHkgYSBzdGFjayBvdmVyZmxvdyksIGFuZCBubyBFeGVjU3RhdGUgYXZh
aWxhYmxlIGZvciB0aHJvd2luZyBhIEpTIGV4Y2VwdGlvbiIpOworICAgICAgICAgICAgICAgIENS
QVNIKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtNDAwLDcgKzQxMyw3IEBAIGlubGluZSB2b2lkIHJlaWZ5U3RhdGljUHJvcGVydGllcyhW
TSYgdm0sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBjb25zdCBIYXNoCiAgICAgICAgIGlm
ICghdmFsdWUubV9rZXkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgYXV0byBrZXkg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KHZhbHVlLm1fa2V5KSwgc3RybGVuKHZhbHVlLm1fa2V5KSk7Ci0gICAgICAgIHJlaWZ5U3Rh
dGljUHJvcGVydHkodm0sIGNsYXNzSW5mbywga2V5LCB2YWx1ZSwgdGhpc09iaik7CisgICAgICAg
IHJlaWZ5U3RhdGljUHJvcGVydHkodm0sIG51bGxwdHIsIGNsYXNzSW5mbywga2V5LCB2YWx1ZSwg
dGhpc09iaik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFwUHJvdG90eXBlLmNwcAppbmRleCA1MzU2OGI3YTNhYWU0YjEyNmNjZTMzOWQzMmQwNDcwZWVh
NzZhMTgzLi5mZTJiNmJlZTEzMjBjYjI1NTdhN2RlNTMyZmZkOTgwNGRiMzI1ZGFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKQEAgLTcxLDcg
KzcxLDcgQEAgdm9pZCBNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0
UHJpdmF0ZU5hbWUoKSwgbWFwUHJvdG9GdW5jR2V0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgSlNNYXBHZXRJbnRyaW5zaWMpOwogICAgIEpT
Q19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zZXRQcml2YXRlTmFtZSgpLCBtYXBQcm90b0Z1bmNTZXQs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyLCBK
U01hcFNldEludHJpbnNpYyk7CiAKLSAgICBKU0Z1bmN0aW9uKiBlbnRyaWVzID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBtYXBQcm90b3R5cGVFbnRyaWVzQ29kZUdlbmVyYXRvcih2bSksIGdsb2Jh
bE9iamVjdCk7CisgICAgSlNGdW5jdGlvbiogZW50cmllcyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgbWFwUHJvdG90eXBlRW50cmllc0NvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIGdsb2JhbE9i
amVjdCk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCksIGVudHJpZXMsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2ws
IGVudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKCZ2bSwgIk1hcCIpLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKaW5kZXggMjkzNDM5NjA4
N2U2OGJmMzhjOTE4NzMxODA0ZjZmNmU3MGIwN2Q2Yy4uZjJmMDVlM2ZmMGZlNGMzYWI5ZjJjYjZi
ZTA1MjlhNDQwYzJmZDg0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2V0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
ZXRQcm90b3R5cGUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgU2V0UHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlND
X05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmhhc1ByaXZhdGVOYW1lKCksIHNldFByb3RvRnVuY0hhcywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEsIEpT
U2V0SGFzSW50cmluc2ljKTsKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRI
T1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYWRkUHJpdmF0
ZU5hbWUoKSwgc2V0UHJvdG9GdW5jQWRkLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgSlNTZXRBZGRJbnRyaW5zaWMpOwogCi0gICAgSlNGdW5j
dGlvbiogdmFsdWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBzZXRQcm90b3R5cGVWYWx1ZXND
b2RlR2VuZXJhdG9yKHZtKSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBKU0Z1bmN0aW9uKiB2YWx1ZXMg
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHNldFByb3RvdHlwZVZhbHVlc0NvZGVHZW5lcmF0b3Io
dm0pLnZhbHVlKCksIGdsb2JhbE9iamVjdCk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUo
KSwgdmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQdWJsaWNOYW1lKCksIHZhbHVlcywgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgdmFs
dWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggNzdmNjAz
OTVjZjZhOTQyNmMxNjYwYmUwZWI4MDFlZjY2Y2FjNzRiZS4uMzZkYmQ0ZjI2YzQwZGJkYzEwZDdl
MzkxNGZlYjA3YjkyNDM1YjIwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0Rv
bGxhclZNLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkpTRG9sbGFyVk0uaCIKIAotI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5o
IgorI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgogI2luY2x1ZGUgIkRPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRPTUpJ
VEdldHRlclNldHRlci5oIgpAQCAtMTUyMiw5ICsxNTIyLDggQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVCdWlsdGluKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAg
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSA9IG1ha2VTb3VyY2UoZnVuY3Rpb25UZXh0LCB7IH0p
OwotICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNyZWF0ZUJ1
aWx0aW5FeGVjdXRhYmxlKHZtLCBzb3VyY2UsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAi
Zm9vIiksIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29u
c3RydWN0KS0+bGluayh2bSwgc291cmNlKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsK
LQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZnVuYyk7CisgICAgYXV0byB1bmxpbmtlZCA9
IEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZU9yQ3Jhc2godm0sIHNvdXJjZSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJmb28iKSwgQ29uc3RydWN0b3JLaW5kOjpOb25l
LCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB1bmxpbmtlZC0+bGluayh2bSwgc291cmNl
KSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlUm9vdChFeGVjU3RhdGUqIGV4ZWMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJp
dmF0ZUNvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRh
YmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKaW5kZXggY2E5N2U5NjExZDAzMjJiNjUy
ZGNjZTRmNmVmOThlNDhhMmQ3MzM2ZC4uMTRjMmJjZGU2OTI1N2JhYzI0MTZkYmU3YTNjM2FkNmJk
M2JkYmIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJs
ZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcApAQCAtMTI0LDI3
ICsxMjQsMjcgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNCdWlsdGluUmVhZGFibGVT
dHJlYW1CWU9CUmVxdWVzdFByaXZhdGVDb25zdHJ1Y3RvcjoKIAogdGVtcGxhdGU8PiBGdW5jdGlv
bkV4ZWN1dGFibGUqIEpTQnVpbHRpblJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlclByaXZhdGVD
b25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUoSlNDOjpWTSYgdm0pCiB7Ci0gICAgcmV0
dXJuIHJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzUHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZVN0cmVh
bURlZmF1bHRSZWFkZXJDb2RlR2VuZXJhdG9yKHZtKTsKKyAgICByZXR1cm4gcmVhZGFibGVTdHJl
YW1JbnRlcm5hbHNQcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlckNv
ZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCk7CiB9CiAKIHRlbXBsYXRlPD4gRnVuY3Rpb25FeGVjdXRh
YmxlKiBKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyUHJpdmF0ZUNvbnN0
cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZShKU0M6OlZNJiB2bSkKIHsKLSAgICByZXR1cm4g
cmVhZGFibGVTdHJlYW1JbnRlcm5hbHNQcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtRGVm
YXVsdENvbnRyb2xsZXJDb2RlR2VuZXJhdG9yKHZtKTsKKyAgICByZXR1cm4gcmVhZGFibGVTdHJl
YW1JbnRlcm5hbHNQcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xs
ZXJDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpOwogfQogCiB0ZW1wbGF0ZTw+IEZ1bmN0aW9uRXhl
Y3V0YWJsZSogSlNCdWlsdGluUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlclByaXZhdGVDb25z
dHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUoSlNDOjpWTSYgdm0pCiB7Ci0gICAgcmV0dXJu
IHJlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFsc1ByaXZhdGVJbml0aWFsaXplUmVhZGFibGVCeXRl
U3RyZWFtQ29udHJvbGxlckNvZGVHZW5lcmF0b3Iodm0pOworICAgIHJldHVybiByZWFkYWJsZUJ5
dGVTdHJlYW1JbnRlcm5hbHNQcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRy
b2xsZXJDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpOwogfQogCiB0ZW1wbGF0ZTw+IEZ1bmN0aW9u
RXhlY3V0YWJsZSogSlNCdWlsdGluUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyUHJpdmF0ZUNvbnN0
cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZShKU0M6OlZNJiB2bSkKIHsKLSAgICByZXR1cm4g
cmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzUHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZVN0cmVh
bUJZT0JSZWFkZXJDb2RlR2VuZXJhdG9yKHZtKTsKKyAgICByZXR1cm4gcmVhZGFibGVCeXRlU3Ry
ZWFtSW50ZXJuYWxzUHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXJDb2Rl
R2VuZXJhdG9yKHZtKS52YWx1ZSgpOwogfQogCiB0ZW1wbGF0ZTw+IEZ1bmN0aW9uRXhlY3V0YWJs
ZSogSlNCdWlsdGluUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdFByaXZhdGVDb25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZUV4ZWN1dGFibGUoSlNDOjpWTSYgdm0pCiB7Ci0gICAgcmV0dXJuIHJlYWRhYmxl
Qnl0ZVN0cmVhbUludGVybmFsc1ByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1CWU9CUmVx
dWVzdENvZGVHZW5lcmF0b3Iodm0pOworICAgIHJldHVybiByZWFkYWJsZUJ5dGVTdHJlYW1JbnRl
cm5hbHNQcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3RDb2RlR2VuZXJh
dG9yKHZtKS52YWx1ZSgpOwogfQogCiBKU09iamVjdCogY3JlYXRlUmVhZGFibGVTdHJlYW1EZWZh
dWx0UmVhZGVyUHJpdmF0ZUNvbnN0cnVjdG9yKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggMGY1ZGNmZWZjZjEzYzVhZTE2YmU4YTY5Yjg5ZTg0NGRhNGFh
M2FlYi4uMzIwOGMyYzgzNzM5MzM4OWUzZmJhYmMxOWYxMTlmM2I5NTRkZDEwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAg
LTcxODMsNyArNzE4Myw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcwog
ICAgIGlmIChJc0pTQnVpbHRpbkNvbnN0cnVjdG9yKCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgInRlbXBsYXRlPD4gRnVuY3Rpb25FeGVjdXRhYmxlKiAke2NvbnN0
cnVjdG9yQ2xhc3NOYW1lfTo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUoVk0mIHZtKVxuIik7CiAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgcmV0dXJuICIgLiBHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWVGcm9tU3RyaW5nKCRp
bnRlcmZhY2UtPnR5cGUtPm5hbWUsICJpbml0aWFsaXplIiAuICRpbnRlcmZhY2UtPnR5cGUtPm5h
bWUpIC4gIih2bSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVy
biAiIC4gR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lRnJvbVN0cmluZygkaW50ZXJmYWNlLT50eXBl
LT5uYW1lLCAiaW5pdGlhbGl6ZSIgLiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lKSAuICIodm0pLnZh
bHVlKCk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuIik7CiAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIlxuIik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXggMTVlMmU0MDA1ZTVl
NWQ5NDQzYjNlNjlhYjA2MDhmYmY2NDIzNjM2OC4uNTBmZWZmYmIxYWYzMDcwZTA0MzUzZWYyZDNk
OGY2MzMwZGZmNzg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3IuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHRlbXBsYXRlPD4gdm9pZCBK
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXpl
UHJvcGVyCiAKIHRlbXBsYXRlPD4gRnVuY3Rpb25FeGVjdXRhYmxlKiBKU1Rlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZShWTSYg
dm0pCiB7Ci0gICAgcmV0dXJuIHRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckluaXRp
YWxpemVUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb2RlR2VuZXJhdG9yKHZtKTsK
KyAgICByZXR1cm4gdGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9ySW5pdGlhbGl6ZVRl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCk7
CiB9CiAKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
cikgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCmluZGV4IGUy
YWU1YmQ4YTQzY2MxZGM5NTc0YmI2M2ZhNGYzNjVmZmEzNjE2NTIuLjgyNTNiYWJmMjE1OGIyYzI4
Zjc5YmRhZTBmNjAwYjhlM2RiYzliMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yLmNwcApAQCAtOTEsNyArOTEsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mCiAK
IHRlbXBsYXRlPD4gRnVuY3Rpb25FeGVjdXRhYmxlKiBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZShWTSYgdm0pCiB7Ci0gICAgcmV0dXJu
IHRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckluaXRpYWxpemVUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3JDb2RlR2VuZXJhdG9yKHZtKTsKKyAgICByZXR1cm4gdGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
SW5pdGlhbGl6ZVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvZGVHZW5lcmF0b3Iodm0pLnZhbHVl
KCk7CiB9CiAKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcikgfTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODMxNDdhYWU3NGU5ZTExNTFj
YTIwNmNhNTkxMDI0NzY2YmYyNGZjMC4uNmI1YmU5ZmM4NzVjNDYxYjUxOTg4NTJjMmUxNWVhZWQz
ZWJlZWM3ZSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOC0wNC0xOSAgUm9iaW4gTW9yaXNzZXQgIDxybW9y
aXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIEEgc3RhY2sgb3ZlcmZsb3cgaW4gdGhlIHBhcnNp
bmcgb2YgYSBidWlsdGluIChjYWxsZWQgYnkgY3JlYXRlRXhlY3V0YWJsZSkgY2F1c2UgYSBjcmFz
aCBpbnN0ZWFkIG9mIGEgY2F0Y2hhYmxlIGpzIGV4Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MDc0CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zNzE2NTg5Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZWl0aCBNaWxsZXIuCisKKyAg
ICAgICAgKiBzdHJlc3Mvc3RhY2stb3ZlcmZsb3ctd2hpbGUtcGFyc2luZy1idWlsdGluLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGYpOgorCiAyMDE4LTA0LTE4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtXZWJBc3NlbWJseV1bTW9kdWxlc10gSW1wb3J0
IHRhYmxlcyBpbiB3YXNtIG1vZHVsZXMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3N0YWNr
LW92ZXJmbG93LXdoaWxlLXBhcnNpbmctYnVpbHRpbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3N0YWNr
LW92ZXJmbG93LXdoaWxlLXBhcnNpbmctYnVpbHRpbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjk5YTE3MmY0
M2ViN2U2MjY3ZDUxY2M2ZGU5MWI2NWE4Y2Y2ZDYxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3Mvc3RhY2stb3ZlcmZsb3ctd2hpbGUtcGFyc2luZy1idWlsdGluLmpzCkBAIC0wLDAg
KzEsMTEgQEAKK2Z1bmN0aW9uIGYoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgZigpOworICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIE1hcC5wcm90b3R5cGUuZm9y
RWFjaC5jYWxsKCcnLCB7fSk7CisgICAgICAgIH0gY2F0Y2gge30KKyAgICB9Cit9CisKK2YoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338584</attachid>
            <date>2018-04-23 07:38:57 -0700</date>
            <delta_ts>2018-05-03 07:18:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184074-20180423163855.patch</filename>
            <type>text/plain</type>
            <size>117617</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MDRhOGFhM2Y0MDVkNjgzMzI2MTFhZDlmN2NkNzY5YjU1N2ZhOGRhLi44Yzk1ODU1MjRiZTM4Y2Nk
NTMyZDdkYzM1ODE5MDhlYjU0Y2U3YTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAxOC0wNC0yMyAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUu
Y29tPgorCisgICAgICAgIEEgc3RhY2sgb3ZlcmZsb3cgaW4gdGhlIHBhcnNpbmcgb2YgYSBidWls
dGluIChjYWxsZWQgYnkgY3JlYXRlRXhlY3V0YWJsZSkgY2F1c2UgYSBjcmFzaCBpbnN0ZWFkIG9m
IGEgY2F0Y2hhYmxlIGpzIGV4Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MDc0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNzE2NTg5
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZWl0aCBNaWxsZXIuCisKKyAgICAgICAgRml4aW5n
IHRoaXMgcmVxdWlyZXMgZ2V0dGluZyB0aGUgUGFyc2VyRXJyb3IgKHdpdGggaW5mb3JtYXRpb24g
YWJvdXQgdGhlIGZhaWx1cmUpIGFuZCBhbiBFeGVjU3RhdGUqICh0byB0aHJvdyBhbiBleGNlcHRp
b24pIGluIHRoZSBzYW1lIHBsYWNlLgorICAgICAgICBJdCBpcyBzdXJwcmlzaW5nbHkgcGFpbmZ1
bCwgd2l0aCBxdWl0ZSBhIGxvbmcgY2FsbCBzdGFjayBiZXR3ZWVuIHRoZSBsYXN0IGZ1bmN0aW9u
IHdpdGggYW4gYWNjZXNzIHRvIGFuIEV4ZWNTdGF0ZSogYW5kIHRoZSBmaXJzdCBmdW5jdGlvbiB3
aXRoIHRoZSBQYXJzZXJFcnJvci4KKyAgICAgICAgRXZlbiB3b3JzZSwgbWFueSBvZiB0aGVzZSBm
dW5jdGlvbnMgYXJlIGdlbmVyYXRlZCBieSBtYWNyb3MsIHRoZW1zZWx2ZXMgZ2VuZXJhdGVkIGJ5
IGEgbWF6ZSBvZiBweXRob24gc2NyaXB0cy4KKyAgICAgICAgQXMgYSByZXN1bHQsIHRoaXMgcGF0
Y2ggaXMgZ3JvdGVzcXVlbHkgbGFyZ2UsIHdoaWxlIGFsbCBpdCBkb2VzIGlzIGFkZGluZyBlbm91
Z2ggcGx1bWJpbmcgdG8gdGhyb3cgYSBwcm9wZXIgZXhjZXB0aW9uIGluIHRoaXMgc3BlY2lmaWMg
Y2FzZS4KKworICAgICAgICBUaGVyZSBhcmUgbm93IGJhcmUgY2FsbHMgdG8gJy52YWx1ZSgpJyBv
biBzZXZlcmFsIHBhdGhzIHRoYXQgbWF5IGNyYXNoLiBJdCBpcyBub3QgYSBwcm9ibGVtIGluIG15
IG9waW5pb24sIHNpbmNlIHdlIHByZXZpb3VzbHkgY3Jhc2hlZCBpbiBldmVyeSBjYXNlIHJlZ2Fy
ZGxlc3Mgb2YgdGhlIHBhdGggdGhhdCB0b29rIHVzIHRvIGNyZWF0ZUV4ZWN1dGFibGUgd2hlbiBl
bmNvdW50ZXJpbmcgYSBzdGFjayBvdmVyZmxvdy4KKyAgICAgICAgSWYgd2UgZXZlciBmaW5kIGFu
IGV4YW1wbGUgdGhhdCBjYW4gY2F1c2UgdGhlc2UgY2FsbHMgdG8gZmFpbCwgaXQgc2hvdWxkIGJl
IGRvYWJsZSB0byB0aHJvdyBhIHByb3BlciBleGNlcHRpb24gdGhlcmUgdG9vLgorICAgICAgICBV
c2luZyAudmFsdWUoKSBhbmQgbm90IGEgc2ltcGxlIGRlcmVmZXJlbmNlIGlzIGltcG9ydGFudCBh
cyB0aGUgbGF0dGVyIGlzIHVuZGVmaW5lZCBiZWhhdmlvdXIgaWYgdGhlcmUgaXMgbm8gJ3ZhbHVl
Jy4KKworICAgICAgICBUd28gb3RoZXIgbWlub3IgY2hhbmdlczoKKyAgICAgICAgLSBJIHJlbW92
ZWQgQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLntjcHAsIGh9IGFzIGl0IHdhcyBuZWFybHkgZW1w
dHksIGFuZCBvbmx5IHVzZWQgaW4gb25lIHBsYWNlLiBUaGF0IHBsYWNlIG5vdyBpbmNsdWRlcyBC
dWlsdGluRXhlY3V0YWJsZXMuaCBkaXJlY3RseSBpbnN0ZWFkLgorICAgICAgICAtIEkgbW92ZWQg
Y29kZSBmcm9tIFBhcnNlckVycm9yLmggaW50byBhIG5ld2x5IGNyZWF0ZWQgUGFyc2VyRXJyb3Iu
Y3BwLCBhcyBJIHNlZSBubyBuZWVkIHRvIGlubGluZSBmdW5jdGlvbnMgdGhhdCBhcmUgb25seSB1
c2VkIHdoZW4gZW5jb3VudGVyaW5nIGEgcGFyc2VyIGVycm9yLCBhbmQgUGFyc2VyRXJyb3IuaCBp
cyBub3cgaW5jbHVkZWQgaW4gcXVpdGUgYSBmZXcgcGxhY2VzLgorCisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTY3JpcHRzL2J1
aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weToKKyAgICAgICAgKEJ1
aWx0aW5zQ29tYmluZWRIZWFkZXJHZW5lcmF0b3IuZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlv
bnMpOgorICAgICAgICAoUGFyc2VyRXJyb3IpOgorICAgICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9m
b3Jfb2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKGdlbmVyYXRlX2V4dGVybnNfZm9yX29iamVj
dCk6IERlbGV0ZWQuCisgICAgICAgIChnZW5lcmF0ZV9tYWNyb3NfZm9yX29iamVjdCk6IERlbGV0
ZWQuCisgICAgICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX3RhYmxlX21hY3JvKTogRGVs
ZXRlZC4KKyAgICAgICAgKGdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9tYWNybyk6IERl
bGV0ZWQuCisgICAgICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9nbG9iYWxfcHJpdmF0ZV9jb2Rl
X25hbWVfbWFjcm8pOiBEZWxldGVkLgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvYnVpbHRp
bnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5OgorICAgICAgICAoZ2VuZXJhdGVfc2Vjb25k
YXJ5X2hlYWRlcl9pbmNsdWRlcyk6CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGlu
c190ZW1wbGF0ZXMucHk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBidWls
dGlucy9CdWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBidWls
dGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0
YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkJ1aWx0aW5F
eGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpjcmVh
dGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6
Y3JlYXRlRXhlY3V0YWJsZU9yQ3Jhc2gpOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJs
ZXM6OmNyZWF0ZUV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXJFcnJvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpQYXJz
ZXJFcnJvcjo6dG9FcnJvck9iamVjdCk6CisgICAgICAgIChKU0M6OlBhcnNlckVycm9yOjp0aHJv
d1N0YWNrT3ZlcmZsb3dPck91dE9mTWVtb3J5KToKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5h
bCk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckVycm9yLmg6CisgICAgICAgIChKU0M6OlBhcnNl
ckVycm9yOjp0b0Vycm9yT2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90eXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6QXN5bmNJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjpGdW5jdGlvblByb3RvdHlwZTo6YWRkRnVuY3Rpb25Qcm9wZXJ0aWVzKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6Z2V0T3duU3RhdGljUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnJlaWZ5QWxsU3RhdGljUHJvcGVydGllcyk6CisgICAgICAgICogcnVudGltZS9KU09i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmdldFByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9K
U09iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE5vbkluZGV4UHJv
cGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUu
Y3BwOgorICAgICAgICAoSlNDOjpKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgICogcnVudGltZS9Mb29rdXAuY3BwOgorICAgICAgICAoSlNDOjpyZWlm
eVN0YXRpY0FjY2Vzc29yKToKKyAgICAgICAgKEpTQzo6c2V0VXBTdGF0aWNGdW5jdGlvblNsb3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6OmdldFN0YXRpY1By
b3BlcnR5U2xvdEZyb21UYWJsZSk6CisgICAgICAgIChKU0M6OnJlaWZ5U3RhdGljUHJvcGVydHkp
OgorICAgICAgICAqIHJ1bnRpbWUvTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFw
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9TZXRQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVh
dGVCdWlsdGluKToKKwogMjAxOC0wNC0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBSZW1vdmUgTW9kdWxlTG9hZGVyUHJvdG90eXBlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggYzU0Y2ViYWVkODMxZGNjYWM4MDhhMTc4NDQ3MTJiMjlkMzFhMzk3OC4uNWU3
OGIyZjk1ZThlN2VlYzY2MTI5M2IyNjY3YzQzZTYxMjg1Njc2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI2IEBACisyMDE4LTA0LTIzICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5j
b20+CisKKyAgICAgICAgQSBzdGFjayBvdmVyZmxvdyBpbiB0aGUgcGFyc2luZyBvZiBhIGJ1aWx0
aW4gKGNhbGxlZCBieSBjcmVhdGVFeGVjdXRhYmxlKSBjYXVzZSBhIGNyYXNoIGluc3RlYWQgb2Yg
YSBjYXRjaGFibGUganMgZXhjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODQwNzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM3MTY1ODk3
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlaXRoIE1pbGxlci4KKworICAgICAgICBJIGhhZCB0
byBzbGlnaHRseSBjaGFuZ2UgdGhlIHR5cGUgb2Ygc29tZSBiaW5kaW5ncyBiZXR3ZWVuIEpTQyBh
bmQgV2ViQ29yZS4gTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQgb24gdGhlIFdlYkNvcmUg
c2lkZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29u
c3RydWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQnVpbHRpblJlYWRhYmxlU3RyZWFt
RGVmYXVsdFJlYWRlclByaXZhdGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNCdWlsdGluUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxl
clByaXZhdGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNCdWlsdGluUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlclByaXZhdGVDb25zdHJ1
Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNCdWlsdGlu
UmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhl
Y3V0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbUJZT0JS
ZXF1ZXN0UHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0
ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6
OmluaXRpYWxpemVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUp
OgorCiAyMDE4LTA0LTIzICBBbGljaWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbTVNFXSBBZGQgYWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCBldmVudApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0ODhlNWIzMThkZDE3MDgxZGI3Y2ZhNDMzZGM1
ZGNiZWUwN2NhNWE3Li5lNjUwYmI1MGE5Yzk1OWE1MGYwNjEwNzQ0OWExODUyZTEzODcxZTEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY3Myw3ICsxNjczLDYgQEAKIAkJRENG
M0Q1NkQxQ0QyOTQ3NjAwM0Q1QzY1IC8qIExhenlQcm9wZXJ0eUlubGluZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRjNENTY4MUNEMjk0NjgwMDNE
NUM2NSAvKiBMYXp5UHJvcGVydHlJbmxpbmVzLmggKi87IH07CiAJCURDRkRGQkQ5MUQxRjVEOUIw
MEZFM0Q3MiAvKiBCM0JvdHRvbVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBEQ0ZERkJENzFEMUY1RDk4MDBGRTNENzIgLyogQjNCb3R0b21Q
cm92aWRlci5oICovOyB9OwogCQlEQ0ZERkJEQTFEMUY1RDlFMDBGRTNENzIgLyogQjNUeXBlTWFw
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQ0ZERkJE
ODFEMUY1RDk4MDBGRTNENzIgLyogQjNUeXBlTWFwLmggKi87IH07Ci0JCURFMjZFOTAzMUNCNURE
MDUwMEQyQkU4MiAvKiBCdWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFMjZFOTAyMUNCNUREMDUwMEQyQkU4MiAv
KiBCdWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuaCAqLzsgfTsKIAkJREVBN0UyNDUxQkJDNjc3RjAw
RDc4NDQwIC8qIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzOTE3RTdDMUI3OTExMDYwMDBFQkQzMyAvKiBK
U1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTEyNEE4RjcwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpT
U3RyaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MTI0QThGNTBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzE2MTgxMzFFQzVGRTE3MDAw
NkEyMTggLyogRE9NQW5ub3RhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMxNjE4MTAxRUM1RkUwODAwMDZBMjE4IC8qIERPTUFubm90YXRpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzE1
OSw2ICszMTU4LDcgQEAKIAkJMUNBQThCNEEwRDMyQzM5QTAwNDFCQ0ZGIC8qIEphdmFTY3JpcHQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlwdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0FBOEI0QjBEMzJDMzlBMDA0MUJDRkYgLyogSmF2YVNj
cmlwdENvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlwdENv
cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjBFQ0IxNUVGQzUyNDYyNEJDMkYw
MkQ1IC8qIE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTIyMEM2MEM2MjA2Q0VBQkQwMEZDNDYzNyAvKiBQYXJzZXJF
cnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJzZXJFcnJvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTI2MDBCNUE0MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pv
aW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1N0cmluZ0pv
aW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2MDBCNUE1MTUyQkFBQTcw
MDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1N0cmluZ0pvaW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjJE
ODVCNDFDMEQ2NTBGMDA2QUNCNjEgLyogQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpckZpeFBhcnRpYWxSZWdpc3Rl
clN0YWxscy5jcHA7IHBhdGggPSBiMy9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1MTAsOCArNDUxMCw2IEBACiAJCURD
RjNENTY4MUNEMjk0NjgwMDNENUM2NSAvKiBMYXp5UHJvcGVydHlJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhenlQcm9wZXJ0eUlubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRENGREZCRDcxRDFGNUQ5ODAwRkUzRDcyIC8qIEIzQm90dG9t
UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNCb3R0b21Qcm92
aWRlci5oOyBwYXRoID0gYjMvQjNCb3R0b21Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlEQ0ZERkJEODFEMUY1RDk4MDBGRTNENzIgLyogQjNUeXBlTWFwLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzVHlwZU1hcC5oOyBwYXRoID0gYjMvQjNUeXBl
TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCURFMjZFOTAyMUNCNUREMDUwMEQy
QkU4MiAvKiBCdWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCURFMjZFOTA2MUNCNUREOTYwMEQyQkU4MiAvKiBCdWlsdGluRXhlY3V0YWJs
ZUNyZWF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnVpbHRp
bkV4ZWN1dGFibGVDcmVhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREU1
QTA5RkYxQkEzQUMzRTAwM0Q0NDI0IC8qIEludHJpbnNpY0VtaXR0ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50cmluc2ljRW1pdHRlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMjRBOEY1MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVK
U1N0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcGFxdWVKU1N0cmlu
Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTI0QThGNjBFNTU1Nzc1MDAzMDkx
RjEgLyogT3BhcXVlSlNTdHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gT3BhcXVlSlNTdHJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NjM1OSw2ICs2MzU3LDcgQEAKIAkJCQk5M0YwQjNBQTA5QkI0REMwMDA2OEZDRTMgLyogUGFyc2Vy
LmggKi8sCiAJCQkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNlckFyZW5hLmNwcCAq
LywKIAkJCQk5MzA1MkMzMzBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuaCAqLywKKwkJ
CQkyMjBDNjBDNjIwNkNFQUJEMDBGQzQ2MzcgLyogUGFyc2VyRXJyb3IuY3BwICovLAogCQkJCTBG
Q0NBRTQzMTZEMENGNkUwMEQwQzY1QiAvKiBQYXJzZXJFcnJvci5oICovLAogCQkJCTlCNDk1NEU4
MUE2NjQwREIwMDI4MTVBNiAvKiBQYXJzZXJGdW5jdGlvbkluZm8uaCAqLywKIAkJCQlBNzdGMTgy
NDE2NDE5MjU0MDA2NDBBNDcgLyogUGFyc2VyTW9kZXMuaCAqLywKQEAgLTc5MTEsOCArNzkxMCw2
IEBACiAJCQkJNUI4MjQzMDQxREI3QUE0OTAwRUE2Mzg0IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5
cGUuanMgKi8sCiAJCQkJOEJDMDY0ODIxRTE4MEI0QTAwQjJCOENBIC8qIEFzeW5jR2VuZXJhdG9y
UHJvdG90eXBlLmpzICovLAogCQkJCThCQzA2NDk1MUUxRDgzOEIwMEIyQjhDQSAvKiBBc3luY0l0
ZXJhdG9yUHJvdG90eXBlLmpzICovLAotCQkJCURFMjZFOTA2MUNCNUREOTYwMEQyQkU4MiAvKiBC
dWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuY3BwICovLAotCQkJCURFMjZFOTAyMUNCNUREMDUwMEQy
QkU4MiAvKiBCdWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuaCAqLywKIAkJCQlBN0Q4MDFBMTE4ODBE
NjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAqLywKIAkJCQlBN0Q4MDFBMjE4
ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggKi8sCiAJCQkJRTM4MEQ2NkIx
RjE5MjQ5RDAwQTU5MDk1IC8qIEJ1aWx0aW5OYW1lcy5jcHAgKi8sCkBAIC04MzQ0LDcgKzgzNDEs
NiBAQAogCQkJCTlCNDY5NDM5MUY5NzQzOUUwMENDQjNGOSAvKiBCb29sZWFuUHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5OTZCNzMxOTFCREEwNjgwMDAzMzFCODQgLyogQm9vbGVhblBy
b3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFQTA4NjIwMTgyQjdBMDQwMEY2RDg1
MSAvKiBCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlERTI2RTkwMzFDQjVERDA1MDBE
MkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
N0Q4MDFBNTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNzVFRTlCMjE4QUFCN0UyMDBBQUQwNDMgLyogQnVpbHRpbk5hbWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5OURBMDBBNjFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnMucHkg
aW4gSGVhZGVycyAqLywKQEAgLTg5MTQsNiArODkxMCw3IEBACiAJCQkJMEZCNDY3ODAxRkREQTZG
MTAwM0ZDQjA5IC8qIElzb0NlbGxTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjQ2NzgxMUZE
REE2RjcwMDNGQ0IwOSAvKiBJc29DZWxsU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZEQ0UxMkQxRkFGQjRFNTAwNkYzOTAxIC8qIElzb1N1YnNwYWNlLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjVFMEZFNzIwODZBRDQ4MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJWTS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOEI5RjZENTYxRDU5MTJGQTAwMUM3MzlGIC8qIEl0ZXJhdGlvbktpbmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEQ1NUI4MUFFNzE2Q0EwMDUyRTQ1OSAvKiBJdGVyYXRp
b25TdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwMTEzRDRDMUE4REIwOTMwMDM4NDhDNCAv
KiBJdGVyYXRvck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLApAQCAtOTQ5MCw3ICs5NDg3LDYg
QEAKIAkJCQk1M0Y4RDIwMDFFODM4N0Q0MDBEMjExMTYgLyogV2FzbUJCUVBsYW5JbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBRDRCMURGQTFERjI0NEUyMDA3MUFFMzIgLyogV2FzbUJpbmRp
bmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNUMwRERBMUU5MzU4NDcwMDIxODRDRCAvKiBXYXNt
Q2FsbGVlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjVFMEZFNzIwODZBRDQ4MDA5N0YwREUgLyog
SXNvU3Vic3BhY2VQZXJWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNGRDA0RDQxRDdBQjI5MTAw
MzI4N0QzIC8qIFdhc21DYWxsaW5nQ29udmVudGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI2
QUM0QjcxRTk3N0M1RDAwMzUwMEUxIC8qIFdhc21Db2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAog
CQkJCUFENDEyQjM0MUU3QjJFOUUwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9i
dWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkK
aW5kZXggY2RlMzU3Y2Q0MzljZWFmNDQ2NDI4ZTY4MTg4NDc4MDczYzAzYzQ5ZC4uNzIxNGNkYWE1
OTQzYjhiY2NhYzMzZTJjMDdmOWZmM2VjMTI3N2Q5NCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaGVh
ZGVyLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0
aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weQpAQCAtNjYsMTIgKzY2LDE3IEBAIGNsYXNz
IEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJHZW5lcmF0b3IoQnVpbHRpbnNHZW5lcmF0b3IpOgogICAg
ICAgICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMpCiAKICAgICBkZWYgZ2VuZXJhdGVfZm9y
d2FyZF9kZWNsYXJhdGlvbnMoc2VsZik6Ci0gICAgICAgIHJldHVybiAiIiJuYW1lc3BhY2UgSlND
IHsKKyAgICAgICAgcmV0dXJuICIiIgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorCituYW1l
c3BhY2UgSlNDIHsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIFZNOworY2xhc3Mg
UGFyc2VyRXJyb3I7CiAKIGVudW0gY2xhc3MgQ29uc3RydWN0QWJpbGl0eSA6IHVuc2lnbmVkOwot
fSIiIgorfQorIiIiCiAKICAgICBkZWYgZ2VuZXJhdGVfc2VjdGlvbl9mb3Jfb2JqZWN0KHNlbGYs
IG9iamVjdCk6CiAgICAgICAgIGxpbmVzID0gW10KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRl
ci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dl
bmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weQppbmRleCA1OGM4ZjJhYzhhNjQxNWEyOTFjZmY4ODhj
ZjFmNjgwYzFkNjYwNDdkLi4xODg5NjI1OWIyZjNlYTZhOTYwNGE5YzQ4ZTBlMTk1ZDA2OGNiZjJh
IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWls
dGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5
CkBAIC05Myw2ICs5MywxMCBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgICAgICAg
ICApLAogCiAgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZh
U2NyaXB0Q29yZSIsICJwYXJzZXIvUGFyc2VyRXJyb3IuaCIpLAorICAgICAgICAgICAgKSwKKwor
ICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAogICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENv
cmUiLCAiYnVpbHRpbnMvQnVpbHRpblV0aWxzLmgiKSwKICAgICAgICAgICAgICksCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3Rl
bXBsYXRlcy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0
aW5zX3RlbXBsYXRlcy5weQppbmRleCA5MDdhNmQ3MTdjOTEwY2IwNzI5OTUwOWM2MWRmODQ2YTlj
NzAxZWZjLi5lYzZiODM1YmM1ZmE5MzI0ZTk4ZmNlYjRhNDAwMTNlNWVhNGQ4YWYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc190ZW1w
bGF0ZXMucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVp
bHRpbnNfdGVtcGxhdGVzLnB5CkBAIC02OCwxNCArNjgsMTQgQEAgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCiAgICAgQ29tYmluZWRIZWFkZXJTdGF0aWNNYWNyb3MgPSAoCiAgICAg
IiIiI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5h
bWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcXAotICAgIEpTQzo6RnVuY3Rpb25F
eGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKyAgICBFeHBlY3RlZDxK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5l
cmF0b3IoSlNDOjpWTSYpOwogCiAke21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShE
RUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFU
T1IiIiIpCiAKICAgICBTZXBhcmF0ZUhlYWRlclN0YXRpY01hY3JvcyA9ICgKICAgICAiIiIjZGVm
aW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3Zl
cnJpZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCi0gICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworICAgIEV4cGVjdGVkPEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihK
U0M6OlZNJik7CiAKICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJ
Tl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVDTEFSRV9CVUlMVElO
X0dFTkVSQVRPUiIiIikKQEAgLTgzLDkgKzgzLDEyIEBAICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hf
JHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAg
ICAgQ29tYmluZWRKU0NJbXBsZW1lbnRhdGlvblN0YXRpY01hY3JvcyA9ICgKICAgICAiIiIKICNk
ZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92
ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcXAotSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUq
IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCitFeHBlY3RlZDxKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlND
OjpWTSYgdm0pIFxcCiB7XFwKLSAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNv
ZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5j
b2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMp
OyBcCisgICAgaWYgKGF1dG8gZXhwZWN0ZWRVbmxpbmtlZCA9IHZtLmJ1aWx0aW5FeGVjdXRhYmxl
cygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpKVxcCisgICAgICAgIHJldHVybiBleHBlY3RlZFVu
bGlua2VkLnZhbHVlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFt
ZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpO1xcCisg
ICAgZWxzZVxcCisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChleHBlY3RlZFVubGlua2Vk
LmVycm9yKCkpO1xcCiB9CiAke21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJ
TkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCkBA
IC05NCw5ICs5NywxMiBAQCAke21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJ
TkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAgICAgU2VwYXJhdGVKU0NJbXBsZW1lbnRhdGlvblN0YXRp
Y01hY3JvcyA9ICgKICAgICAiIiIKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNv
ZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcXAot
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0p
IFxcCitFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+
IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCiB7XFwKLSAgICByZXR1cm4gdm0u
YnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZt
LmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwg
c18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisgICAgaWYgKGF1dG8gZXhwZWN0ZWRVbmxpbmtl
ZCA9IHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpKVxcCisg
ICAgICAgIHJldHVybiBleHBlY3RlZFVubGlua2VkLnZhbHVlKCktPmxpbmsodm0sIHZtLmJ1aWx0
aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2Nv
ZGVOYW1lIyNJbnRyaW5zaWMpO1xcCisgICAgZWxzZVxcCisgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChleHBlY3RlZFVubGlua2VkLmVycm9yKCkpO1xcCiB9CiAke21hY3JvUHJlZml4fV9G
T1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFU
T1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCkBAIC0xMDUsMTAgKzExMSwxMCBA
QCAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShERUZJ
TkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAgICAgQ29tYmluZWRXZWJDb3JlSW1wbGVtZW50YXRpb25T
dGF0aWNNYWNyb3MgPSAoCiAgICAgICAgICIiIgogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5F
UkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50Q291
bnQpIFxcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6
OlZNJiB2bSkgXFwKK0V4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJz
ZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKIHtcXAogICAgIEpT
Vk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKTsgXFwKLSAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9u
cygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGlu
ayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0
aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50
cmluc2ljKTsgXFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7
b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS52YWx1ZSgpLT5s
aW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVp
bHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJ
bnRyaW5zaWMpOyBcXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUoREVG
SU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpA
QCAtMTE3LDEwICsxMjMsMTAgQEAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUo
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogICAgIFNlcGFyYXRlV2ViQ29yZUltcGxlbWVudGF0
aW9uU3RhdGljTWFjcm9zID0gKAogICAgICAgICAiIiIKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5f
R0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVu
dENvdW50KSBcXAotSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3Io
SlNDOjpWTSYgdm0pIFxcCitFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6
UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCiB7XFwKICAg
ICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRh
Kj4odm0uY2xpZW50RGF0YSk7IFxcCi0gICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5j
dGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCkt
Pmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31C
dWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUj
I0ludHJpbnNpYyk7IFxcCisgICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMo
KS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCkudmFsdWUo
KS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxD
fUJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFt
ZSMjSW50cmluc2ljKTsgXFwKIH0KICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNy
b31fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVf
QlVJTFRJTl9HRU5FUkFUT1IKQEAgLTEzOSw3ICsxNDUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAj
ZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgb3Zl
cnJpZGRlbk5hbWUsIGxlbmd0aCkgXFwKLSAgICBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFxcCitFeHBlY3RlZDxKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gbmFtZSMjRXhlY3V0YWJsZSgpOyBcXAog
ICAgIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgY29uc3QgeyByZXR1cm4g
bV8jI25hbWUjI1NvdXJjZTsgfQogICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RN
YWNyb31fQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQogI3VuZGVmIEVY
UE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCkBAIC0xNjIsNyArMTY4LDcgQEAgcHJpdmF0ZToKIH07
CiAKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1l
LCBvdmVycmlkZGVuTmFtZSwgbGVuZ3RoKSBcXAotaW5saW5lIEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqICR7b2JqZWN0TmFtZX1CdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFi
bGUoKSBcXAoraW5saW5lIEV4cGVjdGVkPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
LCBKU0M6OlBhcnNlckVycm9yPiAke29iamVjdE5hbWV9QnVpbHRpbnNXcmFwcGVyOjpuYW1lIyNF
eGVjdXRhYmxlKCkgXFwKIHtcXAogICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUpIHtcXAog
ICAgICAgICBKU0M6OklkZW50aWZpZXIgZXhlY3V0YWJsZU5hbWUgPSBmdW5jdGlvbk5hbWUjI1B1
YmxpY05hbWUoKTtcXApAQCAtMjAyLDcgKzIwOCw3IEBAIHB1YmxpYzoKIGlubGluZSB2b2lkICR7
b2JqZWN0TmFtZX1CdWlsdGluRnVuY3Rpb25zOjppbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKIHsKICNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9OKGNvZGVOYW1lLCBmdW5jdGlv
bk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpXFwKLSAgICBtXyMjZnVuY3Rpb25OYW1lIyNG
dW5jdGlvbi5zZXQobV92bSwgJmdsb2JhbE9iamVjdCwgSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGUo
bV92bSwgY29kZU5hbWUjI0dlbmVyYXRvcihtX3ZtKSwgJmdsb2JhbE9iamVjdCkpOworICAgIG1f
IyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
RnVuY3Rpb246OmNyZWF0ZShtX3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLnZhbHVlKCks
ICZnbG9iYWxPYmplY3QpKTsKICAgICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFj
cm99X0JVSUxUSU5fQ09ERShFWFBPUlRfRlVOQ1RJT04pCiAjdW5kZWYgRVhQT1JUX0ZVTkNUSU9O
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWls
dGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtQ29tYmluZWQuanMt
cmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhw
ZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzLXJlc3VsdApp
bmRleCAwODQyOWY0ZTUyNjFjNzFiMDM1OWI3MDgwYzQ5Zjc5MzM1YTg0MjMxLi5lMDQzZDEwYmFj
NGVjMWJhMDNlM2UzN2IzMjJlMTdkZjBkODlkYWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1C
dWlsdGluLlByb21pc2UtQ29tYmluZWQuanMtcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0
aW4uUHJvbWlzZS1Db21iaW5lZC5qcy1yZXN1bHQKQEAgLTMxLDEzICszMSwxOCBAQAogCiAjcHJh
Z21hIG9uY2UKIAorCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisKIG5hbWVzcGFjZSBKU0Mg
ewogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgVk07CitjbGFzcyBQYXJzZXJFcnJv
cjsKIAogZW51bSBjbGFzcyBDb25zdHJ1Y3RBYmlsaXR5IDogdW5zaWduZWQ7CiB9CiAKKwogbmFt
ZXNwYWNlIEpTQyB7CiAKIC8qIEJ1aWx0aW4uUHJvbWlzZSAqLwpAQCAtNjMsNyArNjgsNyBAQCBl
eHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb21pc2VGdWxmaWxs
UHJvbWlzZUNvZGVDb25zdHJ1Y3RBYgogI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNU
SU9OX1BSSVZBVEVfR0xPQkFMX05BTUUobWFjcm8pIFwKIAogI2RlZmluZSBERUNMQVJFX0JVSUxU
SU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1
bWVudENvdW50KSBcCi0gICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5l
cmF0b3IoSlNDOjpWTSYpOworICAgIEV4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwg
SlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CiAKIEpTQ19G
T1JFQUNIX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERF
Q0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKQEAgLTE1Nyw5ICsxNjIsMTMgQEAgY29uc3QgY2hhciog
c19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZSA9CiAKIAogI2RlZmluZSBERUZJTkVf
QlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUs
IGFyZ3VtZW50Q291bnQpIFwKLUpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2Vu
ZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCitFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSos
IEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKIHtc
Ci0gICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJs
ZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgp
LCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgfQorICAgIGlmIChhdXRv
IGV4cGVjdGVkVW5saW5rZWQgPSB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4
ZWN1dGFibGUoKSlcCisgICAgICAgIHJldHVybiBleHBlY3RlZFVubGlua2VkLnZhbHVlKCktPmxp
bmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6
bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpO1wKKyAgICBlbHNlXAorICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXhwZWN0ZWRVbmxpbmtlZC5lcnJvcigpKTtcCit9CiBKU0Nf
Rk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERF
RklORV9CVUlMVElOX0dFTkVSQVRPUgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGlu
LlByb21pc2UtU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNl
LVNlcGFyYXRlLmpzLXJlc3VsdAppbmRleCA0ZDdjZDIyZGJmZDBjYjVhOTZmYzc0YTBhZjYwMjBk
ZGM3OTA1YzJmLi5kZTgxM2FhMTAwZDY3NzIzOTJlYThhZDc4Mzk5YWM3YzEwMjFlMGRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtU2VwYXJhdGUuanMtcmVzdWx0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVk
L0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTYz
LDcgKzYzLDcgQEAgZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Q
cm9taXNlRnVsZmlsbFByb21pc2VDb2RlQ29uc3RydWN0QWIKICAgICBtYWNybyhyZWplY3RQcm9t
aXNlKSBcCiAKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVu
Y3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJndW1lbnRDb3VudCkgXAotICAgIEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKyAgICBFeHBl
Y3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1l
IyNHZW5lcmF0b3IoSlNDOjpWTSYpOwogCiBKU0NfRk9SRUFDSF9CVUlMVElOLlBST01JU0VfQlVJ
TFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVDTEFSRV9CVUlM
VElOX0dFTkVSQVRPUgpAQCAtMTU2LDkgKzE1NiwxMyBAQCBjb25zdCBjaGFyKiBzX2J1aWx0aW5Q
cm9taXNlRnVsZmlsbFByb21pc2VDb2RlID0KIAogCiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dF
TkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJndW1lbnRD
b3VudCkgXAotSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlND
OjpWTSYgdm0pIFwKK0V4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJz
ZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAoge1wKLSAgICByZXR1
cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmso
dm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVs
bG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyB9CisgICAgaWYgKGF1dG8gZXhwZWN0ZWRV
bmxpbmtlZCA9IHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgp
KVwKKyAgICAgICAgcmV0dXJuIGV4cGVjdGVkVW5saW5rZWQudmFsdWUoKS0+bGluayh2bSwgdm0u
YnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBz
XyMjY29kZU5hbWUjI0ludHJpbnNpYyk7XAorICAgIGVsc2VcCisgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChleHBlY3RlZFVubGlua2VkLmVycm9yKCkpO1wKK30KIEpTQ19GT1JFQUNIX0JV
SUxUSU4uUFJPTUlTRV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3Vu
ZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1C
dWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGlu
LnByb3RvdHlwZS1Db21iaW5lZC5qcy1yZXN1bHQKaW5kZXggN2I3NzYwMjA1MzdkMDZmMGQ3N2Nk
MDZiZThkMmI2YTdiYWNmZGE2OC4uNWY3NDA4NDE1MWExMzdhYWY4OTM4NTEzZWZlNGExZDU4Njcw
NzljYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQu
anMtcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpz
LXJlc3VsdApAQCAtMzEsMTMgKzMxLDE4IEBACiAKICNwcmFnbWEgb25jZQogCisKKyNpbmNsdWRl
IDx3dGYvRXhwZWN0ZWQuaD4KKwogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1
dGFibGU7CiBjbGFzcyBWTTsKK2NsYXNzIFBhcnNlckVycm9yOwogCiBlbnVtIGNsYXNzIENvbnN0
cnVjdEFiaWxpdHkgOiB1bnNpZ25lZDsKIH0KIAorCiBuYW1lc3BhY2UgSlNDIHsKIAogLyogQnVp
bHRpbi5wcm90b3R5cGUgKi8KQEAgLTc1LDcgKzgwLDcgQEAgZXh0ZXJuIGNvbnN0IEpTQzo6Q29u
c3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm90b3R5cGVUZXN0Q29kZUNvbnN0cnVjdEFiaWxpdHk7
CiAjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fUFJJVkFURV9HTE9CQUxfTkFN
RShtYWNybykgXAogCiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUs
IGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKLSAgICBKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisgICAg
RXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBjb2Rl
TmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKIAogSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERF
Q0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRP
UgpAQCAtMjc5LDkgKzI4NCwxMyBAQCBjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm90b3R5cGVUZXN0
Q29kZSA9CiAKIAogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1
bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKLUpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCitFeHBlY3Rl
ZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNH
ZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKIHtcCi0gICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRh
YmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0
YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMj
SW50cmluc2ljKTsgfQorICAgIGlmIChhdXRvIGV4cGVjdGVkVW5saW5rZWQgPSB2bS5idWlsdGlu
RXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKSlcCisgICAgICAgIHJldHVybiBl
eHBlY3RlZFVubGlua2VkLnZhbHVlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygp
LT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5z
aWMpO1wKKyAgICBlbHNlXAorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXhwZWN0ZWRV
bmxpbmtlZC5lcnJvcigpKTtcCit9CiBKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JV
SUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1TZXBhcmF0ZS5qcy1yZXN1bHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9K
YXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1TZXBhcmF0ZS5qcy1yZXN1bHQKaW5kZXgg
YjJiNzJjZGJiODlhZjA0MWQ0OTcyZDFmOWI4ZDE3MGE5NWY2YjQxYi4uYTIzNGEzZDczOGY0N2Rm
MzgwOGUwMTU4MzkyYWNhZjBkNjVhN2EwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRp
bi5wcm90b3R5cGUtU2VwYXJhdGUuanMtcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4u
cHJvdG90eXBlLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtNzcsNyArNzcsNyBAQCBleHRlcm4gY29u
c3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb3RvdHlwZVRlc3RDb2RlQ29uc3Ry
dWN0QWJpbGl0eTsKICAgICBtYWNybyh0ZXN0KSBcCiAKICNkZWZpbmUgREVDTEFSRV9CVUlMVElO
X0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJndW1l
bnRDb3VudCkgXAotICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJh
dG9yKEpTQzo6Vk0mKTsKKyAgICBFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpT
Qzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOwogCiBKU0NfRk9S
RUFDSF9CVUlMVElOLlBST1RPVFlQRV9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVS
QVRPUikKICN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCkBAIC0yODAsOSArMjgwLDEz
IEBAIGNvbnN0IGNoYXIqIHNfYnVpbHRpblByb3RvdHlwZVRlc3RDb2RlID0KIAogCiAjZGVmaW5l
IERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlk
ZGVuTmFtZSwgYXJndW1lbnRDb3VudCkgXAotSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVO
YW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKK0V4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2
bSkgXAoge1wKLSAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNF
eGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMj
U291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyB9CisgICAg
aWYgKGF1dG8gZXhwZWN0ZWRVbmxpbmtlZCA9IHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2Rl
TmFtZSMjRXhlY3V0YWJsZSgpKVwKKyAgICAgICAgcmV0dXJuIGV4cGVjdGVkVW5saW5rZWQudmFs
dWUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2Uo
KSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7XAorICAgIGVsc2VcCisg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChleHBlY3RlZFVubGlua2VkLmVycm9yKCkpO1wK
K30KIEpTQ19GT1JFQUNIX0JVSUxUSU4uUFJPVE9UWVBFX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJ
TFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcy1yZXN1bHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9K
YXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQuanMtcmVzdWx0CmluZGV4
IDkyMTQyNmRmYmNiZmQ0ZWIyMDQ2OTYyMTNiNTEwMGI2NTY2ODg1MDAuLjU2NjkxNzE4YmI0NmZm
NDNlOTlhYzIyODEzZWVhMDJmMDBmOTlkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0
aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRp
bkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzLXJlc3VsdApAQCAtMzAsMTMgKzMwLDE4IEBACiAKICNw
cmFnbWEgb25jZQogCisKKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KKwogbmFtZXNwYWNlIEpT
QyB7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBWTTsKK2NsYXNzIFBhcnNlckVy
cm9yOwogCiBlbnVtIGNsYXNzIENvbnN0cnVjdEFiaWxpdHkgOiB1bnNpZ25lZDsKIH0KIAorCiBu
YW1lc3BhY2UgSlNDIHsKIAogLyogQnVpbHRpbkNvbnN0cnVjdG9yICovCkBAIC02Miw3ICs2Nyw3
IEBAIGV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluQ29uc3RydWN0
b3JGcm9tQ29kZUNvbnN0cnVjdEFiaWxpdHk7CiAjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5f
RlVOQ1RJT05fUFJJVkFURV9HTE9CQUxfTkFNRShtYWNybykgXAogCiAjZGVmaW5lIERFQ0xBUkVf
QlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUs
IGFyZ3VtZW50Q291bnQpIFwKLSAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUj
I0dlbmVyYXRvcihKU0M6OlZNJik7CisgICAgRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGUqLCBKU0M6OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKIAog
SlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5k
ZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgpAQCAtMjExLDkgKzIxNiwxMyBAQCBjb25zdCBj
aGFyKiBzX2J1aWx0aW5Db25zdHJ1Y3RvckZyb21Db2RlID0KIAogCiAjZGVmaW5lIERFRklORV9C
VUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwg
YXJndW1lbnRDb3VudCkgXAotSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5l
cmF0b3IoSlNDOjpWTSYgdm0pIFwKK0V4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwg
SlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAoge1wK
LSAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxl
KCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCks
IHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyB9CisgICAgaWYgKGF1dG8g
ZXhwZWN0ZWRVbmxpbmtlZCA9IHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhl
Y3V0YWJsZSgpKVwKKyAgICAgICAgcmV0dXJuIGV4cGVjdGVkVW5saW5rZWQudmFsdWUoKS0+bGlu
ayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpu
dWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7XAorICAgIGVsc2VcCisgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChleHBlY3RlZFVubGlua2VkLmVycm9yKCkpO1wKK30KIEpTQ19G
T1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVG
SU5FX0JVSUxUSU5fR0VORVJBVE9SCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5D
b25zdHJ1Y3Rvci1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3Ry
dWN0b3ItU2VwYXJhdGUuanMtcmVzdWx0CmluZGV4IDZmZjU5N2Y1NGU2MmY3ZDE2MGI4MjlmM2Fk
YzhmZDljY2QzYTZkOTIuLmNjNjQyNTkwMmU3NmQ1ZDdmMzZhODliYTcwNDA4ZDBmYTRiNWIxMWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5z
L2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1TZXBhcmF0ZS5qcy1y
ZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
ZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpzLXJl
c3VsdApAQCAtNjIsNyArNjIsNyBAQCBleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
IHNfYnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNvZGVDb25zdHJ1Y3RBYmlsaXR5OwogICAgIG1hY3Jv
KG9mKSBcCiAKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVu
Y3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJndW1lbnRDb3VudCkgXAotICAgIEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKyAgICBFeHBl
Y3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1l
IyNHZW5lcmF0b3IoSlNDOjpWTSYpOwogCiBKU0NfRk9SRUFDSF9CVUlMVElOQ09OU1RSVUNUT1Jf
QlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVDTEFSRV9C
VUlMVElOX0dFTkVSQVRPUgpAQCAtMjEwLDkgKzIxMCwxMyBAQCBjb25zdCBjaGFyKiBzX2J1aWx0
aW5Db25zdHJ1Y3RvckZyb21Db2RlID0KIAogCiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVS
QVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJndW1lbnRDb3Vu
dCkgXAotSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpW
TSYgdm0pIFwKK0V4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJF
cnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAoge1wKLSAgICByZXR1cm4g
dm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0s
IHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9w
dCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyB9CisgICAgaWYgKGF1dG8gZXhwZWN0ZWRVbmxp
bmtlZCA9IHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpKVwK
KyAgICAgICAgcmV0dXJuIGV4cGVjdGVkVW5saW5rZWQudmFsdWUoKS0+bGluayh2bSwgdm0uYnVp
bHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMj
Y29kZU5hbWUjI0ludHJpbnNpYyk7XAorICAgIGVsc2VcCisgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChleHBlY3RlZFVubGlua2VkLmVycm9yKCkpO1wKK30KIEpTQ19GT1JFQUNIX0JVSUxU
SU5DT05TVFJVQ1RPUl9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3Vu
ZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1J
bnRlcm5hbENsYXNoaW5nTmFtZXMtQ29tYmluZWQuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtSW50
ZXJuYWxDbGFzaGluZ05hbWVzLUNvbWJpbmVkLmpzLXJlc3VsdAppbmRleCBiYjEyMTE3NWJlOGQ4
ZjI5NmNlYWRkMTQ2ZTg5ZDMwY2FjZjkzM2RkLi5hNDk4ZDZhYmJlZDlkOGZhZGRjYzVlMjBiNjg2
YjMzZTlkZGQ4ZTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1JbnRlcm5hbENsYXNoaW5nTmFt
ZXMtQ29tYmluZWQuanMtcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUludGVybmFsQ2xhc2hpbmdO
YW1lcy1Db21iaW5lZC5qcy1yZXN1bHQKQEAgLTMxLDEzICszMSwxOCBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisKIG5hbWVzcGFjZSBKU0MgewogY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgVk07CitjbGFzcyBQYXJzZXJFcnJvcjsKIAog
ZW51bSBjbGFzcyBDb25zdHJ1Y3RBYmlsaXR5IDogdW5zaWduZWQ7CiB9CiAKKwogbmFtZXNwYWNl
IEpTQyB7CiAKIC8qIEludGVybmFsQ2xhc2hpbmdOYW1lcyAqLwpAQCAtNjIsNyArNjcsNyBAQCBl
eHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfaW50ZXJuYWxDbGFzaGluZ05hbWVz
SXNSZWFkYWJsZVN0cmVhbUxvY2tlZAogI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNU
SU9OX1BSSVZBVEVfR0xPQkFMX05BTUUobWFjcm8pIFwKIAogI2RlZmluZSBERUNMQVJFX0JVSUxU
SU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1
bWVudENvdW50KSBcCi0gICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5l
cmF0b3IoSlNDOjpWTSYpOworICAgIEV4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwg
SlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CiAKIEpTQ19G
T1JFQUNIX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERF
Q0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKQEAgLTE0MCw5ICsxNDUsMTMgQEAgY29uc3QgY2hhciog
c19pbnRlcm5hbENsYXNoaW5nTmFtZXNJc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZSA9CiAKIAog
I2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwg
b3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKLUpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
KiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCitFeHBlY3RlZDxKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlND
OjpWTSYgdm0pIFwKIHtcCi0gICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2Rl
TmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29k
ZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsg
fQorICAgIGlmIChhdXRvIGV4cGVjdGVkVW5saW5rZWQgPSB2bS5idWlsdGluRXhlY3V0YWJsZXMo
KS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKSlcCisgICAgICAgIHJldHVybiBleHBlY3RlZFVubGlu
a2VkLnZhbHVlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMj
U291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpO1wKKyAgICBl
bHNlXAorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXhwZWN0ZWRVbmxpbmtlZC5lcnJv
cigpKTtcCit9CiBKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJB
VE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3Jl
LUFub3RoZXJHdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUt
QW5vdGhlckd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CmluZGV4IGI4
YmNmYjg0N2UwMTUwNTJlYTY2OWYzMTJmNWYzNWZmZWRjZDg2YzguLmNmZDc1ZjcxNzkyNDJhODRi
YTAxMDAzOGYyOTA5MzU4MzVjMDFhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtQW5vdGhlckd1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtQW5vdGhlckd1YXJk
ZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpblV0aWxzLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRnVuY3Rp
b24uaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9QYXJzZXJFcnJvci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewpAQCAtNjAsNyArNjEsNyBAQCBleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmls
aXR5IHNfYW5vdGhlckd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5MZXRzRmV0Y2hDb2RlQwogICAgIG1h
Y3JvKGxldHNGZXRjaCkgXAogCiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29k
ZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKLSAg
ICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7
CisgICAgRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9y
PiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKIAogV0VCQ09SRV9GT1JFQUNIX0FOT1RI
RVJHVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VO
RVJBVE9SKQogI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKQEAgLTc3LDcgKzc4LDcg
QEAgcHVibGljOgogICAgIH0KIAogI2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhu
YW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpIFwKLSAgICBKU0M6OlVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwKK0V4cGVjdGVk
PEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBuYW1l
IyNFeGVjdXRhYmxlKCk7IFwKICAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIG5hbWUjI1NvdXJj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KICAgICBXRUJDT1JFX0ZPUkVB
Q0hfQU5PVEhFUkdVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlM
VElOX0VYRUNVVEFCTEVTKQogI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCkBAIC0x
MDAsNyArMTAxLDcgQEAgcHJpdmF0ZToKIH07CiAKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhF
Q1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgbGVuZ3RoKSBcCi1p
bmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQW5vdGhlckd1YXJkZWRJbnRl
cm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFibGUoKSBcCitpbmxpbmUg
RXhwZWN0ZWQ8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJy
b3I+IEFub3RoZXJHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyOjpuYW1lIyNF
eGVjdXRhYmxlKCkgXAoge1wKICAgICBpZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxlKSB7XAogICAg
ICAgICBKU0M6OklkZW50aWZpZXIgZXhlY3V0YWJsZU5hbWUgPSBmdW5jdGlvbk5hbWUjI1B1Ymxp
Y05hbWUoKTtcCkBAIC0xMzksNyArMTQwLDcgQEAgcHVibGljOgogaW5saW5lIHZvaWQgQW5vdGhl
ckd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zOjppbml0KEpTQzo6SlNHbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9OKGNvZGVO
YW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpXAotICAgIG1fIyNmdW5j
dGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rp
b246OmNyZWF0ZShtX3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0
KSk7CisgICAgbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlKG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0b3IobV92
bSkudmFsdWUoKSwgJmdsb2JhbE9iamVjdCkpOwogICAgIFdFQkNPUkVfRk9SRUFDSF9BTk9USEVS
R1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NPREUoRVhQT1JUX0ZVTkNUSU9OKQogI3Vu
ZGVmIEVYUE9SVF9GVU5DVElPTgogfQpAQCAtMjE3LDEwICsyMTgsMTAgQEAgY29uc3QgY2hhciog
c19hbm90aGVyR3VhcmRlZEludGVybmFsQnVpbHRpbkxldHNGZXRjaENvZGUgPQogCiAKICNkZWZp
bmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJy
aWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29k
ZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAorRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4
ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0m
IHZtKSBcCiB7XAogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXAotICAgIHJldHVybiBjbGllbnREYXRh
LT5idWlsdGluRnVuY3Rpb25zKCkuYW5vdGhlckd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlu
cygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5G
dW5jdGlvbnMoKS5hbm90aGVyR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5h
bWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAor
ICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuYW5vdGhlckd1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCkudmFsdWUoKS0+
bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmFub3RoZXJHdWFyZGVkSW50
ZXJuYWxCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwg
c18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCiB9CiBXRUJDT1JFX0ZPUkVBQ0hfQU5PVEhFUkdV
QVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRP
UikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtQXJi
aXRyYXJ5Q29uZGl0aW9uYWxHdWFyZC1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUFyYml0cmFy
eUNvbmRpdGlvbmFsR3VhcmQtU2VwYXJhdGUuanMtcmVzdWx0CmluZGV4IGQ0ZDQxYmYwYzNkYzcx
NTViMTRjY2MxNDg3MmY0YTY1MGI0ZGI5MTkuLjdmNTY0Y2VhYjExN2RiMTQ2Njk2MDFmYmFmYzBl
NzFmMGJjODQ4ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtQXJiaXRyYXJ5Q29uZGl0aW9uYWxHdWFyZC1T
ZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1BcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkLVNl
cGFyYXRlLmpzLXJlc3VsdApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0J1aWx0aW5VdGlscy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvUGFyc2VyRXJyb3IuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Vbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTYxLDcgKzYy
LDcgQEAgZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2FyYml0cmFyeUNvbmRp
dGlvbmFsR3VhcmRJc1JlYWRhYmxlU3RyZWFtTG8KICAgICBtYWNybyhpc1JlYWRhYmxlU3RyZWFt
TG9ja2VkKSBcCiAKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwg
ZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJndW1lbnRDb3VudCkgXAotICAgIEpTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKyAgICBF
eHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVO
YW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOwogCiBXRUJDT1JFX0ZPUkVBQ0hfQVJCSVRSQVJZQ09O
RElUSU9OQUxHVUFSRF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKICN1
bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCkBAIC03OCw3ICs3OSw3IEBAIHB1YmxpYzoK
ICAgICB9CiAKICNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rp
b25OYW1lLCBvdmVycmlkZGVuTmFtZSwgbGVuZ3RoKSBcCi0gICAgSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCitFeHBlY3RlZDxKU0M6OlVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gbmFtZSMjRXhlY3V0YWJs
ZSgpOyBcCiAgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7
IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CiAgICAgV0VCQ09SRV9GT1JFQUNIX0FSQklUUkFS
WUNPTkRJVElPTkFMR1VBUkRfQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVT
KQogI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCkBAIC0xMDEsNyArMTAyLDcgQEAg
cHJpdmF0ZToKIH07CiAKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwg
ZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgbGVuZ3RoKSBcCi1pbmxpbmUgSlNDOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQXJiaXRyYXJ5Q29uZGl0aW9uYWxHdWFyZEJ1aWx0aW5z
V3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK2lubGluZSBFeHBlY3RlZDxKU0M6OlVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gQXJiaXRyYXJ5Q29uZGl0
aW9uYWxHdWFyZEJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKIHtcCiAgICAg
aWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSkge1wKICAgICAgICAgSlNDOjpJZGVudGlmaWVyIGV4
ZWN1dGFibGVOYW1lID0gZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCk7XApAQCAtMTg3LDEwICsx
ODgsMTAgQEAgY29uc3QgY2hhciogc19hcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkSXNSZWFkYWJs
ZVN0cmVhbUxvY2tlZENvZGUgPQogCiAKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9S
KGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBc
Ci1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2
bSkgXAorRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9y
PiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCiB7XAogICAgIEpTVk1DbGllbnRE
YXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnRE
YXRhKTsgXAotICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuYXJiaXRy
YXJ5Q29uZGl0aW9uYWxHdWFyZEJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGlu
ayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmFyYml0cmFyeUNvbmRpdGlvbmFs
R3VhcmRCdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29k
ZU5hbWUjI0ludHJpbnNpYyk7IFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0
aW9ucygpLmFyYml0cmFyeUNvbmRpdGlvbmFsR3VhcmRCdWlsdGlucygpLmNvZGVOYW1lIyNFeGVj
dXRhYmxlKCkudmFsdWUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygp
LmFyYml0cmFyeUNvbmRpdGlvbmFsR3VhcmRCdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwg
c3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFwKIH0KIFdFQkNPUkVfRk9S
RUFDSF9BUkJJVFJBUllDT05ESVRJT05BTEdVQVJEX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJ
Tl9HRU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9X
ZWJDb3JlLUd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEJ1
aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CmluZGV4IDU5MjU0Y2UyY2UwOTExNmYyMGQ2YzVhMWI2
NGQ1MTFmMjU1ZDU4ZDcuLmE1MTM5MGFhOTA5ZTA0ZDRiOTU1ODFlNTI2ZDkwZjFmODA4MDk0Y2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5z
L2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dl
YkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpblV0aWxzLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRnVu
Y3Rpb24uaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9QYXJzZXJFcnJvci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewpAQCAtNjEsNyArNjIsNyBAQCBleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RB
YmlsaXR5IHNfZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUNvbgogICAg
IG1hY3JvKGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQpIFwKIAogI2RlZmluZSBERUNMQVJFX0JVSUxU
SU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1
bWVudENvdW50KSBcCi0gICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5l
cmF0b3IoSlNDOjpWTSYpOworICAgIEV4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwg
SlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CiAKIFdFQkNP
UkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dF
TkVSQVRPUikKICN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCkBAIC03OCw3ICs3OSw3
IEBAIHB1YmxpYzoKICAgICB9CiAKICNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMo
bmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgbGVuZ3RoKSBcCi0gICAgSlNDOjpV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCitFeHBlY3Rl
ZDxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gbmFt
ZSMjRXhlY3V0YWJsZSgpOyBcCiAgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CiAgICAgV0VCQ09SRV9GT1JF
QUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxF
UykKICN1bmRlZiBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUwpAQCAtMTAxLDcgKzEwMiw3IEBA
IHByaXZhdGU6CiB9OwogCiAjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUs
IGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGxlbmd0aCkgXAotaW5saW5lIEpTQzo6VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyOjpu
YW1lIyNFeGVjdXRhYmxlKCkgXAoraW5saW5lIEV4cGVjdGVkPEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3Jh
cHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKIHtcCiAgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0
YWJsZSkge1wKICAgICAgICAgSlNDOjpJZGVudGlmaWVyIGV4ZWN1dGFibGVOYW1lID0gZnVuY3Rp
b25OYW1lIyNQdWJsaWNOYW1lKCk7XApAQCAtMTg3LDEwICsxODgsMTAgQEAgY29uc3QgY2hhciog
c19ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlID0KIAogCiAjZGVmaW5l
IERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlk
ZGVuTmFtZSwgYXJndW1lbnRDb3VudCkgXAotSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVO
YW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKK0V4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2
bSkgXAoge1wKICAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFwKLSAgICByZXR1cm4gY2xpZW50RGF0YS0+
YnVpbHRpbkZ1bmN0aW9ucygpLmd1YXJkZWRCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhl
Y3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuZ3VhcmRl
ZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMj
Y29kZU5hbWUjI0ludHJpbnNpYyk7IFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1
bmN0aW9ucygpLmd1YXJkZWRCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgp
LnZhbHVlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5ndWFyZGVk
QnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNj
b2RlTmFtZSMjSW50cmluc2ljKTsgXAogfQogV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElO
X0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JV
SUxUSU5fR0VORVJBVE9SCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4t
U2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRl
LmpzLXJlc3VsdAppbmRleCA2NWRkM2U4NDMxMDVjYzliZWRkNzMzNDE2YTExZjU3YjcxYzk4MDEx
Li5hODg0ODZiNzU2ZWQwZGQ4MDQ4MjhiMjVhYTM5MTkyMjYzODgyY2Q2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJD
b3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUt
R3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTM2LDYgKzM2LDcg
QEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluVXRpbHMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNG
dW5jdGlvbi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1BhcnNlckVycm9yLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CkBAIC02MSw3ICs2Miw3IEBAIGV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVj
dEFiaWxpdHkgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlCiAg
ICAgbWFjcm8oaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCkgXAogCiAjZGVmaW5lIERFQ0xBUkVfQlVJ
TFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFy
Z3VtZW50Q291bnQpIFwKLSAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dl
bmVyYXRvcihKU0M6OlZNJik7CisgICAgRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUq
LCBKU0M6OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKIAogV0VC
Q09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVf
QlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgpAQCAt
NzgsNyArNzksNyBAQCBwdWJsaWM6CiAgICAgfQogCiAjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VY
RUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGxlbmd0aCkgXAot
ICAgIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsg
XAorRXhwZWN0ZWQ8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2Vy
RXJyb3I+IG5hbWUjI0V4ZWN1dGFibGUoKTsgXAogICAgIGNvbnN0IEpTQzo6U291cmNlQ29kZSYg
bmFtZSMjU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQogICAgIFdF
QkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShFWFBPU0Vf
QlVJTFRJTl9FWEVDVVRBQkxFUykKICN1bmRlZiBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUwpA
QCAtMTAxLDcgKzEwMiw3IEBAIHByaXZhdGU6CiB9OwogCiAjZGVmaW5lIERFRklORV9CVUlMVElO
X0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGxlbmd0aCkg
XAotaW5saW5lIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEd1YXJkZWRJbnRlcm5h
bEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFibGUoKSBcCitpbmxpbmUgRXhw
ZWN0ZWQ8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+
IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFibGUo
KSBcCiB7XAogICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUpIHtcCiAgICAgICAgIEpTQzo6
SWRlbnRpZmllciBleGVjdXRhYmxlTmFtZSA9IGZ1bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpO1wK
QEAgLTE0MCw3ICsxNDEsNyBAQCBwdWJsaWM6CiBpbmxpbmUgdm9pZCBHdWFyZGVkSW50ZXJuYWxC
dWlsdGluQnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCiB7CiAjZGVmaW5lIEVYUE9SVF9GVU5DVElPTihjb2RlTmFtZSwgZnVuY3Rpb25OYW1l
LCBvdmVycmlkZGVuTmFtZSwgbGVuZ3RoKVwKLSAgICBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlv
bi5zZXQobV92bSwgJmdsb2JhbE9iamVjdCwgSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGUobV92bSwg
Y29kZU5hbWUjI0dlbmVyYXRvcihtX3ZtKSwgJmdsb2JhbE9iamVjdCkpOworICAgIG1fIyNmdW5j
dGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rp
b246OmNyZWF0ZShtX3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLnZhbHVlKCksICZnbG9i
YWxPYmplY3QpKTsKICAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9C
VUlMVElOX0NPREUoRVhQT1JUX0ZVTkNUSU9OKQogI3VuZGVmIEVYUE9SVF9GVU5DVElPTgogfQpA
QCAtMjE5LDEwICsyMjAsMTAgQEAgY29uc3QgY2hhciogc19ndWFyZGVkSW50ZXJuYWxCdWlsdGlu
SXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUgPQogCiAKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5f
R0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVu
dENvdW50KSBcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihK
U0M6OlZNJiB2bSkgXAorRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBh
cnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCiB7XAogICAgIEpT
Vk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKTsgXAotICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25z
KCkuZ3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUo
KS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmd1YXJkZWRJbnRlcm5h
bEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMj
Y29kZU5hbWUjI0ludHJpbnNpYyk7IFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1
bmN0aW9ucygpLmd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVj
dXRhYmxlKCkudmFsdWUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygp
Lmd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgc3Rk
OjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFwKIH0KIFdFQkNPUkVfRk9SRUFD
SF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5F
UkFUT1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3Jl
LVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Vbmd1YXJkZWRCdWls
dGluLVNlcGFyYXRlLmpzLXJlc3VsdAppbmRleCAwNmM5MzVhYzgxNDk4MmE4OTE3YjE0NmFjMDAx
NjFkODNlZmRmNGI3Li40YWJiMWUwZTJiODFmMGNjZTQxMjBjOTVhNjdhMDcyMjk0MTgwZWI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9l
eHBlY3RlZC9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dl
YkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluVXRpbHMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNG
dW5jdGlvbi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1BhcnNlckVycm9yLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CkBAIC01OSw3ICs2MCw3IEBAIGV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVj
dEFiaWxpdHkgc191bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVDCiAg
ICAgbWFjcm8oaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCkgXAogCiAjZGVmaW5lIERFQ0xBUkVfQlVJ
TFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFy
Z3VtZW50Q291bnQpIFwKLSAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dl
bmVyYXRvcihKU0M6OlZNJik7CisgICAgRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUq
LCBKU0M6OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKIAogV0VC
Q09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJ
Tl9HRU5FUkFUT1IpCiAjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgpAQCAtNzYsNyAr
NzcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFC
TEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGxlbmd0aCkgXAotICAgIEpT
Qzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXAorRXhw
ZWN0ZWQ8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+
IG5hbWUjI0V4ZWN1dGFibGUoKTsgXAogICAgIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgbmFtZSMj
U291cmNlKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQogICAgIFdFQkNPUkVf
Rk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShFWFBPU0VfQlVJTFRJTl9FWEVD
VVRBQkxFUykKICN1bmRlZiBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUwpAQCAtOTksNyArMTAw
LDcgQEAgcHJpdmF0ZToKIH07CiAKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMo
bmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgbGVuZ3RoKSBcCi1pbmxpbmUgSlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3Jh
cHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK2lubGluZSBFeHBlY3RlZDxKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gVW5ndWFyZGVkQnVpbHRpbkJ1
aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKIHtcCiAgICAgaWYgKCFtXyMjbmFt
ZSMjRXhlY3V0YWJsZSkge1wKICAgICAgICAgSlNDOjpJZGVudGlmaWVyIGV4ZWN1dGFibGVOYW1l
ID0gZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCk7XApAQCAtMTgxLDEwICsxODIsMTAgQEAgY29u
c3QgY2hhciogc191bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUgPQog
CiAKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5h
bWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0
YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAorRXhwZWN0ZWQ8SlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9y
KEpTQzo6Vk0mIHZtKSBcCiB7XAogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3Rh
dGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXAotICAgIHJldHVybiBj
bGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkudW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zKCku
Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0
aW9ucygpLnVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgc3Rk
OjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFwKKyAgICByZXR1cm4gY2xpZW50
RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLnVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVO
YW1lIyNFeGVjdXRhYmxlKCkudmFsdWUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1
bmN0aW9ucygpLnVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwg
c3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFwKIH0KIFdFQkNPUkVfRk9S
RUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFU
T1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLXht
bENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFy
YXRlLmpzLXJlc3VsdAppbmRleCBiMjRiY2EzY2FhNWNkMDA4ZGM4OGMyOTY3NWQ0MzQxYTM4MDFm
YmI2Li40NDk0NGU4OGRlYjVlYmNjMjg1NTZmMTU5YWY0NWM0MjU2ZWNlMWM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9X
ZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUteG1sQ2Fz
aW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9CdWlsdGluVXRpbHMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9J
ZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNGdW5jdGlvbi5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1BhcnNlckVycm9yLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBA
IC03NSw3ICs3Niw3IEBAIGV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc194bWxD
YXNpbmdUZXN0VXJsQ2FzaW5nVGVzdENvZGVDb25zdHJ1Y3RBYmlsCiAgICAgbWFjcm8oeG1sQ2Fz
aW5nVGVzdCkgXAogCiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUs
IGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKLSAgICBKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisgICAg
RXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBjb2Rl
TmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKIAogV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RF
U1RfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVDTEFS
RV9CVUlMVElOX0dFTkVSQVRPUgpAQCAtOTIsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAj
ZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgb3Zl
cnJpZGRlbk5hbWUsIGxlbmd0aCkgXAotICAgIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXAorRXhwZWN0ZWQ8SlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IG5hbWUjI0V4ZWN1dGFibGUoKTsgXAogICAg
IGNvbnN0IEpTQzo6U291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV8j
I25hbWUjI1NvdXJjZTsgfQogICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxU
SU5fQ09ERShFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKICN1bmRlZiBFWFBPU0VfQlVJTFRJ
Tl9FWEVDVVRBQkxFUwpAQCAtMTE1LDcgKzExNiw3IEBAIHByaXZhdGU6CiB9OwogCiAjZGVmaW5l
IERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRl
bk5hbWUsIGxlbmd0aCkgXAotaW5saW5lIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFibGUoKSBcCitpbmxp
bmUgRXhwZWN0ZWQ8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2Vy
RXJyb3I+IHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFibGUoKSBc
CiB7XAogICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUpIHtcCiAgICAgICAgIEpTQzo6SWRl
bnRpZmllciBleGVjdXRhYmxlTmFtZSA9IGZ1bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpO1wKQEAg
LTE1NCw3ICsxNTUsNyBAQCBwdWJsaWM6CiBpbmxpbmUgdm9pZCB4bWxDYXNpbmdUZXN0QnVpbHRp
bkZ1bmN0aW9uczo6aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAj
ZGVmaW5lIEVYUE9SVF9GVU5DVElPTihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVu
TmFtZSwgbGVuZ3RoKVwKLSAgICBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbi5zZXQobV92bSwg
Jmdsb2JhbE9iamVjdCwgSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGUobV92bSwgY29kZU5hbWUjI0dl
bmVyYXRvcihtX3ZtKSwgJmdsb2JhbE9iamVjdCkpOworICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1
bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZSht
X3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLnZhbHVlKCksICZnbG9iYWxPYmplY3QpKTsK
ICAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0NPREUoRVhQT1JUX0ZV
TkNUSU9OKQogI3VuZGVmIEVYUE9SVF9GVU5DVElPTgogfQpAQCAtMjcyLDEwICsyNzMsMTAgQEAg
Y29uc3QgY2hhciogc194bWxDYXNpbmdUZXN0VXJsQ2FzaW5nVGVzdENvZGUgPQogCiAKICNkZWZp
bmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJy
aWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29k
ZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAorRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4
ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0m
IHZtKSBcCiB7XAogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXAotICAgIHJldHVybiBjbGllbnREYXRh
LT5idWlsdGluRnVuY3Rpb25zKCkueG1sQ2FzaW5nVGVzdEJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4
ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLnhtbENh
c2luZ1Rlc3RCdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMj
Y29kZU5hbWUjI0ludHJpbnNpYyk7IFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1
bmN0aW9ucygpLnhtbENhc2luZ1Rlc3RCdWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCku
dmFsdWUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLnhtbENhc2lu
Z1Rlc3RCdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29k
ZU5hbWUjI0ludHJpbnNpYyk7IFwKIH0KIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JV
SUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JVSUxU
SU5fR0VORVJBVE9SCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggNTdmNWQ3YmM5NWFh
OWUxY2E3MDI2OTQwYWRiMjg5NDExMzMxZTQ1Mi4uODM3MDQ0YzBhYjM3ZTYwMzY3MzgxNGI3YjI2
NmVkZWRhMzRkMzExOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMTc5LDcgKzE3
OSw2IEBAIGJpbmRpbmdzL1NjcmlwdE9iamVjdC5jcHAKIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNw
cAogCiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCi1idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZUNyZWF0b3IuY3BwCiBidWlsdGlucy9CdWlsdGluTmFtZXMuY3BwCiAKIGJ5dGVjb2Rl
L0FjY2Vzc0Nhc2UuY3BwCkBAIC02NTQsNiArNjUzLDcgQEAgcGFyc2VyL05vZGVzLmNwcAogcGFy
c2VyL05vZGVzQW5hbHl6ZU1vZHVsZS5jcHAKIHBhcnNlci9QYXJzZXIuY3BwCiBwYXJzZXIvUGFy
c2VyQXJlbmEuY3BwCitwYXJzZXIvUGFyc2VyRXJyb3IuY3BwCiBwYXJzZXIvU291cmNlUHJvdmlk
ZXIuY3BwCiBwYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZS5jcHAKIHBhcnNlci9VbmxpbmtlZFNv
dXJjZUNvZGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9CdWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAyYjc5ZTdlNmVmOTVjZTIxYzQ0MzIzYTZlYTQxZDM2YTMzZmEzNTk1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZUNy
ZWF0b3IuaCIKLQotI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgotCi1uYW1lc3BhY2Ug
SlNDIHsKLQotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRh
YmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgQ29uc3RydWN0b3JLaW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgYWJpbGl0eSkKLXsK
LSAgICByZXR1cm4gQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKHZtLCBzb3Vy
Y2UsIGlkZW50LCBraW5kLCBhYmlsaXR5KTsKLX0KLSAgICAKLX0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
YmxlQ3JlYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlQ3JlYXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWMwODg0Yjdi
NjFkZjA4MGNkYWMzYWU1Y2IyZDA2ZWUzMzVhZTEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluRXhlY3V0YWJsZUNyZWF0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2luY2x1ZGUgIkNvbnN0cnVjdEFiaWxpdHkuaCIKLSNpbmNsdWRlICJQYXJzZXJNb2Rlcy5o
IgotI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLUpTX0VYUE9S
VF9QUklWQVRFIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0
YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgQ29uc3RydWN0
b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5KTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3Bw
CmluZGV4IGFkMGQ4MzlhZTE5MTg0MDQ5M2M2NWZjNDI4MmQ0NzU1MjEwNzE2ZGMuLjlkZjhjODdm
ZTYwYmM0OGExODM4NzM4NWI4NjQ3YjBkNjE2N2E4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC0zMCw2ICsz
MCw3IEBACiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIlBhcnNlci5oIgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQyLDcgKzQz
LDcgQEAgQnVpbHRpbkV4ZWN1dGFibGVzOjpCdWlsdGluRXhlY3V0YWJsZXMoVk0mIHZtKQogewog
fQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVh
dGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgY29u
c3QgSWRlbnRpZmllciYgbmFtZSkKK0V4cGVjdGVkVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUg
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKIHsKICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBiYXNlQ29uc3RydWN0b3JDb2RlKE1BS0Vf
U1RBVElDX1NUUklOR19JTVBMKCIoZnVuY3Rpb24gKCkgeyB9KSIpKTsKICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBkZXJpdmVkQ29uc3RydWN0b3JDb2RlKE1BS0VfU1RB
VElDX1NUUklOR19JTVBMKCIoZnVuY3Rpb24gKC4uLmFyZ3MpIHsgc3VwZXIoLi4uYXJncyk7IH0p
IikpOwpAQCAtNTUsMjEgKzU2LDI4IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWls
dGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvcihDb25zdHJ1CiAgICAgY2Fz
ZSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHM6CiAgICAgICAgIHJldHVybiBjcmVhdGVFeGVjdXRh
YmxlKG1fdm0sIG1ha2VTb3VyY2UoZGVyaXZlZENvbnN0cnVjdG9yQ29kZSwgeyB9KSwgbmFtZSwg
Y29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QpOwogICAgIH0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3Vy
Y2VDb2RlJiBjb2RlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBDb25zdHJ1Y3RBYmlsaXR5IGNv
bnN0cnVjdEFiaWxpdHkpCitFeHBlY3RlZFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIEJ1aWx0
aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoY29uc3QgU291cmNlQ29kZSYg
Y29kZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RB
YmlsaXR5KQogewogICAgIHJldHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIGNvZGUsIG5hbWUs
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgY29uc3RydWN0QWJpbGl0eSk7CiB9CiAKIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIGNvZGUsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIENvbnN0cnVjdEFiaWxp
dHkgY29uc3RydWN0QWJpbGl0eSkKIHsKLSAgICByZXR1cm4gQnVpbHRpbkV4ZWN1dGFibGVzOjpj
cmVhdGVFeGVjdXRhYmxlKHZtLCBjb2RlLCBuYW1lLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGNv
bnN0cnVjdEFiaWxpdHkpOworICAgIHJldHVybiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4
ZWN1dGFibGVPckNyYXNoKHZtLCBjb2RlLCBuYW1lLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGNv
bnN0cnVjdEFiaWxpdHkpOwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRp
bkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0
b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkpCitVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlT3JDcmFz
aChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25z
dHJ1Y3RBYmlsaXR5KQoreworICAgIGlmIChhdXRvIGV4cGVjdGVkID0gQnVpbHRpbkV4ZWN1dGFi
bGVzOjpjcmVhdGVFeGVjdXRhYmxlKHZtLCBzb3VyY2UsIG5hbWUsIGNvbnN0cnVjdG9yS2luZCwg
Y29uc3RydWN0QWJpbGl0eSkpCisgICAgICAgIHJldHVybiBleHBlY3RlZC52YWx1ZSgpOworICAg
IGRhdGFMb2dMbigiRmF0YWwgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW4gZnVuY3Rpb24gJyIsIG5h
bWUuc3RyaW5nKCksICInIik7CisgICAgQ1JBU0goKTsKK30KKworRXhwZWN0ZWRVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0m
IHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIENv
bnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0
QWJpbGl0eSkKIHsKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5l
OwogICAgIFBhcnNlckVycm9yIGVycm9yOwpAQCAtODMsOCArOTEsOCBAQCBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2
bSwgY29uc3QgUwogICAgICAgICAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSwgY29uc3RydWN0
b3JLaW5kKTsKIAogICAgIGlmICghcHJvZ3JhbSkgewotICAgICAgICBkYXRhTG9nKCJGYXRhbCBl
cnJvciBjb21waWxpbmcgYnVpbHRpbiBmdW5jdGlvbiAnIiwgbmFtZS5zdHJpbmcoKSwgIic6ICIs
IGVycm9yLm1lc3NhZ2UoKSk7Ci0gICAgICAgIENSQVNIKCk7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGVycm9yLmlzVmFsaWQoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChXVEZN
b3ZlKGVycm9yKSk7CiAgICAgfQogCiAgICAgU3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9
IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVudCgpOwpAQCAtMTA2LDcgKzExNCw3IEBAIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUo
Vk0mIHZtLCBjb25zdCBTCiAgICAgbWV0YWRhdGEtPm92ZXJyaWRlTmFtZShuYW1lKTsKICAgICBW
YXJpYWJsZUVudmlyb25tZW50IGR1bW15VERaVmFyaWFibGVzOwogICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0
eSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBkdW1teVREWlZhcmlhYmxlcywgRGVyaXZl
ZENvbnRleHRUeXBlOjpOb25lLCBXVEZNb3ZlKHBhcmVudFNvdXJjZU92ZXJyaWRlKSk7Ci0gICAg
cmV0dXJuIGZ1bmN0aW9uRXhlY3V0YWJsZTsKKyAgICByZXR1cm4gRXhwZWN0ZWRVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZShmdW5jdGlvbkV4ZWN1dGFibGUpOwogfQogCiB2b2lkIEJ1aWx0aW5F
eGVjdXRhYmxlczo6ZmluYWxpemUoSGFuZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0KQpAQCAt
MTE1LDE1ICsxMjMsMTggQEAgdm9pZCBCdWlsdGluRXhlY3V0YWJsZXM6OmZpbmFsaXplKEhhbmRs
ZTxVbmtub3duPiwgdm9pZCogY29udGV4dCkKIH0KIAogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9F
WEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRlTmFtZSwgbGVuZ3RoKSBcCi1V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpuYW1lIyNFeGVj
dXRhYmxlKCkgXAorRXhwZWN0ZWRVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBCdWlsdGluRXhl
Y3V0YWJsZXM6Om5hbWUjI0V4ZWN1dGFibGUoKSBcCiB7XAogICAgIGlmICghbV8jI25hbWUjI0V4
ZWN1dGFibGUpIHtcCiAgICAgICAgIElkZW50aWZpZXIgZXhlY3V0YWJsZU5hbWUgPSBtX3ZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZ1bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpO1wK
ICAgICAgICAgaWYgKG92ZXJyaWRlTmFtZSlcCiAgICAgICAgICAgICBleGVjdXRhYmxlTmFtZSA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fdm0sIG92ZXJyaWRlTmFtZSk7XAotICAgICAgICBt
XyMjbmFtZSMjRXhlY3V0YWJsZSA9IFdlYWs8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KGNy
ZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fIyNuYW1lIyNTb3VyY2UsIGV4ZWN1dGFibGVOYW1lLCBz
XyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSksIHRoaXMsICZtXyMjbmFtZSMjRXhlY3V0YWJsZSk7
XAorICAgICAgICBFeHBlY3RlZFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGYgPSBjcmVhdGVC
dWlsdGluRXhlY3V0YWJsZShtXyMjbmFtZSMjU291cmNlLCBleGVjdXRhYmxlTmFtZSwgc18jI25h
bWUjI0NvbnN0cnVjdEFiaWxpdHkpO1wKKyAgICAgICAgaWYgKCFmLmhhc192YWx1ZSgpKVwKKyAg
ICAgICAgICAgIHJldHVybiBmO1wKKyAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBXZWFr
PFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPihmLnZhbHVlKCksIHRoaXMsICZtXyMjbmFtZSMj
RXhlY3V0YWJsZSk7XAogICAgIH1cCi0gICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdl
dCgpO1wKKyAgICByZXR1cm4gRXhwZWN0ZWRVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShtXyMj
bmFtZSMjRXhlY3V0YWJsZS5nZXQoKSk7XAogfQogSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERF
RklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQogI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NPVVJDRVMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0
YWJsZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJs
ZXMuaAppbmRleCAzNjhhMzFiN2FjYjZhMzJjOWQ1OGU1ZGUyODAxYzI4OWJiZjUyYTJmLi4xZDE3
NDJiNTMwYmQwZDFjZmYwNTRmMjMyY2FiYzdiN2E1MTAxMTMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCkBAIC0yNiwxMCAr
MjYsMTEgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKLSNpbmNs
dWRlICJQYXJzZXJNb2Rlcy5oIgorI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlNvdXJj
ZUNvZGUuaCIKICNpbmNsdWRlICJXZWFrLmgiCiAjaW5jbHVkZSAiV2Vha0hhbmRsZU93bmVyLmgi
CisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0zNywy
NyArMzgsMzAgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBJZGVu
dGlmaWVyOwogY2xhc3MgVk07CiAKK3VzaW5nIEV4cGVjdGVkVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUgPSBFeHBlY3RlZDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIFBhcnNlckVycm9y
PjsKKwogY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzIGZpbmFsOiBwcml2YXRlIFdlYWtIYW5kbGVP
d25lciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgQnVpbHRpbkV4ZWN1dGFibGVzKFZNJik7CiAKICNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhF
Q1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgbGVuZ3RoKSBcCi1V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCitFeHBlY3Rl
ZFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIG5hbWUjI0V4ZWN1dGFibGUoKTsgXAogY29uc3Qg
U291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQog
ICAgIAogICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShFWFBPU0VfQlVJTFRJTl9FWEVDVVRB
QkxFUykKICN1bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VTCiAKLSAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogY3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENvbnN0cnVjdG9yS2luZCwg
Y29uc3QgSWRlbnRpZmllciYgbmFtZSk7CisgICAgRXhwZWN0ZWRVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSBjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lKTsKIAotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogY3JlYXRlRXhlY3V0YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlm
aWVyJiwgQ29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5KTsKKyAgICBzdGF0aWMgRXhw
ZWN0ZWRVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBjcmVhdGVFeGVjdXRhYmxlKFZNJiwgY29u
c3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBDb25zdHJ1Y3RvcktpbmQsIENvbnN0
cnVjdEFiaWxpdHkpOworICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3Jl
YXRlRXhlY3V0YWJsZU9yQ3Jhc2goVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRp
ZmllciYsIENvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSk7CiBwcml2YXRlOgogICAg
IHZvaWQgZmluYWxpemUoSGFuZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0KSBvdmVycmlkZTsK
IAogICAgIFZNJiBtX3ZtOwogCi0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0
ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwg
Q29uc3RydWN0QWJpbGl0eSk7CisgICAgRXhwZWN0ZWRVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRp
ZmllciYsIENvbnN0cnVjdEFiaWxpdHkpOwogCiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VS
Q0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpXAog
ICAgIFNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJjZTsgXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBk
MWQ0MTkyYThmZjNiOWEzYzcwOGU5NDRjYjlkYzQxNWVjY2I5MWNkLi41MjU3MTZjMWJjNWQ2NWM3
NzExZDU1YTlhZmZlYzhmNTFjYjQ4N2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMzMyMiw3ICsz
MzIyLDIxIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3TWV0aG9kRGVm
aW5pdGlvbihSZWdpc3RlcklEKiBkc3QsIE1ldGhvZERlCiBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsCiAgICAg
Y29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIGNsYXNzU291cmNl
KQogewotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbV92bS0+
YnVpbHRpbkV4ZWN1dGFibGVzKCktPmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rv
cktpbmQsIG5hbWUpOworICAgIEV4cGVjdGVkPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwg
UGFyc2VyRXJyb3I+IGV4cGVjdGVkRXhlY3V0YWJsZSA9IG1fdm0tPmJ1aWx0aW5FeGVjdXRhYmxl
cygpLT5jcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoY29uc3RydWN0b3JLaW5kLCBuYW1lKTsKKyAg
ICBpZiAoIWV4cGVjdGVkRXhlY3V0YWJsZS5oYXNfdmFsdWUoKSkgeworICAgICAgICBzd2l0Y2gg
KGV4cGVjdGVkRXhlY3V0YWJsZS5lcnJvcigpLnR5cGUoKSkgeworICAgICAgICBjYXNlIFBhcnNl
ckVycm9yOjpTdGFja092ZXJmbG93OgorICAgICAgICAgICAgZW1pdFRocm93UmFuZ2VFcnJvcigi
U3RhY2sgb3ZlcmZsb3cgaW4gdGhlIHBhcnNlciIpOworICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIGNhc2UgUGFyc2VyRXJyb3I6Ok91dE9mTWVtb3J5OgorICAgICAgICAgICAg
ZW1pdFRocm93T3V0T2ZNZW1vcnlFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICB9CisgICAgfQorCisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUgPSBleHBlY3RlZEV4ZWN1dGFibGUudmFsdWUoKTsKICAgICBleGVjdXRhYmxl
LT5zZXRJbnZhbGlkVHlwZVByb2ZpbGluZ09mZnNldHMoKTsKICAgICBleGVjdXRhYmxlLT5zZXRF
Y21hTmFtZShlY21hTmFtZSk7CiAgICAgZXhlY3V0YWJsZS0+c2V0Q2xhc3NTb3VyY2UoY2xhc3NT
b3VyY2UpOwpAQCAtNDA3Myw2ICs0MDg3LDExIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRUaHJvd1R5cGVFcnJvcihjb25zdCBJZGVudGlmaWVyJiBtZXNzYWdlKQogICAgIGVtaXRUaHJv
d1N0YXRpY0Vycm9yKEVycm9yVHlwZTo6VHlwZUVycm9yLCBtZXNzYWdlKTsKIH0KIAordm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRocm93UmFuZ2VFcnJvcihjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCit7CisgICAgZW1pdFRocm93U3RhdGljRXJyb3IoRXJyb3JUeXBlOjpSYW5nZUVycm9yLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKG1fdm0sIG1lc3NhZ2UpKTsKK30KKwogdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFRocm93UmFuZ2VFcnJvcihjb25zdCBJZGVudGlmaWVyJiBtZXNzYWdl
KQogewogICAgIGVtaXRUaHJvd1N0YXRpY0Vycm9yKEVycm9yVHlwZTo6UmFuZ2VFcnJvciwgbWVz
c2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggYjcyNTVhYzYyMTZlMDlkY2UxYWQ0ZDdjNjY5ZWM1NDZh
MmNiNDY3My4uYzM0ZGE5ZDcyNGU1MjU4MDgwNjYxMTI4ZDdmMGNmOGNjZDc1ZjAyYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaApAQCAtMzEsNiArMzEsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKKyNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yRnVuY3Rp
b24uaCIKQEAgLTg0OSw2ICs4NTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBl
bWl0VGhyb3dSZWZlcmVuY2VFcnJvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgICAgICB2
b2lkIGVtaXRUaHJvd1R5cGVFcnJvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgICAgICB2
b2lkIGVtaXRUaHJvd1R5cGVFcnJvcihjb25zdCBJZGVudGlmaWVyJiBtZXNzYWdlKTsKKyAgICAg
ICAgdm9pZCBlbWl0VGhyb3dSYW5nZUVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAg
ICAgIHZvaWQgZW1pdFRocm93UmFuZ2VFcnJvcihjb25zdCBJZGVudGlmaWVyJiBtZXNzYWdlKTsK
ICAgICAgICAgdm9pZCBlbWl0VGhyb3dPdXRPZk1lbW9yeUVycm9yKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJyb3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJFcnJvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTUyNzk4ZTdh
ZmMyNDdlMWY0N2Y1NzI4YmFlZjU1YTQwYzIwNGY1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJyb3IuY3BwCkBAIC0wLDAgKzEsOTQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIKKworI2luY2x1ZGUgIkVycm9ySGFu
ZGxpbmdTY29wZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJI
ZWFwQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisKK0pTT2JqZWN0KiBQYXJzZXJFcnJvcjo6dG9FcnJvck9iamVjdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGludCBv
dmVycmlkZUxpbmVOdW1iZXIpCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCk7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIEVycm9yTm9u
ZToKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgY2FzZSBTeW50YXhFcnJvcjogeworICAg
ICAgICBhdXRvIHN5bnRheEVycm9yID0gY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgbV9tZXNzYWdl
KTsKKyAgICAgICAgYXV0byBsaW5lID0gb3ZlcnJpZGVMaW5lTnVtYmVyID09IC0xID8gbV9saW5l
IDogb3ZlcnJpZGVMaW5lTnVtYmVyOworICAgICAgICByZXR1cm4gYWRkRXJyb3JJbmZvKGV4ZWMs
IHN5bnRheEVycm9yLCBsaW5lLCBzb3VyY2UpOworICAgIH0KKyAgICBjYXNlIEV2YWxFcnJvcjoK
KyAgICAgICAgcmV0dXJuIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIG1fbWVzc2FnZSk7CisgICAg
Y2FzZSBTdGFja092ZXJmbG93OiB7CisgICAgICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNj
b3BlKGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVTdGFja092ZXJm
bG93RXJyb3IoZXhlYyk7CisgICAgfQorICAgIGNhc2UgT3V0T2ZNZW1vcnk6CisgICAgICAgIHJl
dHVybiBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgIH0KKyAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNl
IFdURiB7CisKK2NvbnN0IGNoYXIqIHRvU3RyaW5nKEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVy
cm9yVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgSlNDOjpQYXJz
ZXJFcnJvcjo6U3ludGF4RXJyb3JOb25lOiByZXR1cm4gIlN5bnRheEVycm9yTm9uZSI7CisgICAg
Y2FzZSBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJvcklycmVjb3ZlcmFibGU6IHJldHVybiAi
U3ludGF4RXJyb3JJcnJlY292ZXJhYmxlIjsKKyAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN5
bnRheEVycm9yVW50ZXJtaW5hdGVkTGl0ZXJhbDogcmV0dXJuICJTeW50YXhFcnJvclVudGVybWlu
YXRlZExpdGVyYWwiOworICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JSZWNv
dmVyYWJsZTogcmV0dXJuICJTeW50YXhFcnJvclJlY292ZXJhYmxlIjsKKyAgICB9CisgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJvclR5cGUgdHlwZSkKK3sKKyAg
ICBvdXQucHJpbnQodG9TdHJpbmcodHlwZSkpOworfQorCitjb25zdCBjaGFyKiB0b1N0cmluZyhK
U0M6OlBhcnNlckVycm9yOjpFcnJvclR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsK
KyAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OkVycm9yTm9uZTogcmV0dXJuICJFcnJvck5vbmUi
OworICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6U3RhY2tPdmVyZmxvdzogcmV0dXJuICJTdGFj
a092ZXJmbG93IjsKKyAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OkV2YWxFcnJvcjogcmV0dXJu
ICJFdmFsRXJyb3IiOworICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6T3V0T2ZNZW1vcnk6IHJl
dHVybiAiT3V0T2ZNZW1vcnkiOworICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6U3ludGF4RXJy
b3I6IHJldHVybiAiU3ludGF4RXJyb3IiOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworfQordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6
UGFyc2VyRXJyb3I6OkVycm9yVHlwZSB0eXBlKQoreworICAgIG91dC5wcmludCh0b1N0cmluZyh0
eXBlKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXJFcnJvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJFcnJvci5oCmluZGV4IDc4ODNlZmVkMjI1MDIyYzAyMDZiNzg2NDBiNWE3MTc4
OWQ5Y2VhNTIuLmU0NTFhMmMyNWRlNDVlMDdhZGNiYTBjM2RlZDliZjM3YThmYjNmMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJyb3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckVycm9yLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDkgKzI1LDYgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJFcnJvci5oIgotI2luY2x1ZGUgIkVycm9ySGFu
ZGxpbmdTY29wZS5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJQ
YXJzZXJUb2tlbnMuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtODIs
MzMgKzc5LDEwIEBAIHB1YmxpYzoKICAgICBTeW50YXhFcnJvclR5cGUgc3ludGF4RXJyb3JUeXBl
KCkgY29uc3QgeyByZXR1cm4gbV9zeW50YXhFcnJvclR5cGU7IH0KICAgICBjb25zdCBKU1Rva2Vu
JiB0b2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fdG9rZW47IH0KICAgICBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0KKyAgICBFcnJvclR5cGUgdHlwZSgp
IGNvbnN0IHtyZXR1cm4gbV90eXBlOyB9CiAgICAgaW50IGxpbmUoKSBjb25zdCB7IHJldHVybiBt
X2xpbmU7IH0KIAotICAgIEpTT2JqZWN0KiB0b0Vycm9yT2JqZWN0KAotICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIAotICAgICAg
ICBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyID0gLTEpCi0gICAgewotICAgICAgICBFeGVjU3RhdGUq
IGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICAgICAgc3dpdGNoIChtX3R5
cGUpIHsKLSAgICAgICAgY2FzZSBFcnJvck5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgY2FzZSBTeW50YXhFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBhZGRFcnJv
ckluZm8oCi0gICAgICAgICAgICAgICAgZXhlYywgCi0gICAgICAgICAgICAgICAgY3JlYXRlU3lu
dGF4RXJyb3IoZXhlYywgbV9tZXNzYWdlKSwgCi0gICAgICAgICAgICAgICAgb3ZlcnJpZGVMaW5l
TnVtYmVyID09IC0xID8gbV9saW5lIDogb3ZlcnJpZGVMaW5lTnVtYmVyLCBzb3VyY2UpOwotICAg
ICAgICBjYXNlIEV2YWxFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBjcmVhdGVTeW50YXhFcnJv
cihleGVjLCBtX21lc3NhZ2UpOwotICAgICAgICBjYXNlIFN0YWNrT3ZlcmZsb3c6IHsKLSAgICAg
ICAgICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3BlKGdsb2JhbE9iamVjdC0+dm0oKSk7
Ci0gICAgICAgICAgICByZXR1cm4gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgT3V0T2ZNZW1vcnk6Ci0gICAgICAgICAgICByZXR1cm4gY3Jl
YXRlT3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKLSAgICAgICAgfQotICAgICAgICBDUkFTSCgpOwot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAgSlNPYmplY3QqIHRvRXJyb3JPYmpl
Y3QoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgaW50IG92ZXJyaWRlTGluZU51
bWJlciA9IC0xKTsKIAogcHJpdmF0ZToKICAgICBKU1Rva2VuIG1fdG9rZW47CkBAIC0xMjEsNDgg
Kzk1LDggQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsK
LQotaW5saW5lIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OlBhcnNl
ckVycm9yOjpTeW50YXhFcnJvclR5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAg
ICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9yTm9uZToKLSAgICAgICAgb3V0LnBy
aW50KCJTeW50YXhFcnJvck5vbmUiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpQ
YXJzZXJFcnJvcjo6U3ludGF4RXJyb3JJcnJlY292ZXJhYmxlOgotICAgICAgICBvdXQucHJpbnQo
IlN5bnRheEVycm9ySXJyZWNvdmVyYWJsZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBK
U0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJvclVudGVybWluYXRlZExpdGVyYWw6Ci0gICAgICAg
IG91dC5wcmludCgiU3ludGF4RXJyb3JVbnRlcm1pbmF0ZWRMaXRlcmFsIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9yUmVjb3ZlcmFibGU6
Ci0gICAgICAgIG91dC5wcmludCgiU3ludGF4RXJyb3JSZWNvdmVyYWJsZSIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19
Ci0KLWlubGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpQYXJz
ZXJFcnJvcjo6RXJyb3JUeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2Fz
ZSBKU0M6OlBhcnNlckVycm9yOjpFcnJvck5vbmU6Ci0gICAgICAgIG91dC5wcmludCgiRXJyb3JO
b25lIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN0YWNr
T3ZlcmZsb3c6Ci0gICAgICAgIG91dC5wcmludCgiU3RhY2tPdmVyZmxvdyIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpFdmFsRXJyb3I6Ci0gICAgICAgIG91
dC5wcmludCgiRXZhbEVycm9yIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpTQzo6UGFy
c2VyRXJyb3I6Ok91dE9mTWVtb3J5OgotICAgICAgICBvdXQucHJpbnQoIk91dE9mTWVtb3J5Iik7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9y
OgotICAgICAgICBvdXQucHJpbnQoIlN5bnRheEVycm9yIik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQorY29uc3Qg
Y2hhciogdG9TdHJpbmcoSlNDOjpQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JUeXBlKTsKK3ZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9y
VHlwZSk7Citjb25zdCBjaGFyKiB0b1N0cmluZyhKU0M6OlBhcnNlckVycm9yOjpFcnJvclR5cGUp
Owordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpQYXJzZXJFcnJvcjo6RXJy
b3JUeXBlKTsKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCA4MDBjZmEw
OTY0MWMwY2EyODA4ZjA1NjAxMmVkYTNkMDIzMjIzN2Y3Li4xNzYxOTkwOWM1M2Y0ZmQ1MGNiMmQz
NGNiNGQ4YTI0YjQ3MmI5MTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtNDEsNyArNDEsNyBAQCB2
b2lkIEFzeW5jSXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7
CiAgICAgZGlkQmVjb21lUHJvdG90eXBlKCk7CiAKLSAgICBKU0Z1bmN0aW9uKiBhc3luY0l0ZXJh
dG9yUHJvdG90eXBlRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGFzeW5jSXRlcmF0
b3JQcm90b3R5cGVTeW1ib2xBc3luY0l0ZXJhdG9yR2V0dGVyQ29kZUdlbmVyYXRvcih2bSksIGds
b2JhbE9iamVjdCk7CisgICAgSlNGdW5jdGlvbiogYXN5bmNJdGVyYXRvclByb3RvdHlwZUZ1bmN0
aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBhc3luY0l0ZXJhdG9yUHJvdG90eXBlU3ltYm9s
QXN5bmNJdGVyYXRvckdldHRlckNvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIGdsb2JhbE9iamVj
dCk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PmFzeW5jSXRlcmF0b3JTeW1ib2wsIGFzeW5jSXRlcmF0b3JQcm90b3R5cGVGdW5jdGlvbiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5j
cHAKaW5kZXggN2NhNjkyM2MyMDc5NTk4NDYzZjZhMDFlMWFjOTVmNTIzZmU0ZmIzMC4uMWE0ZTI3
ZGJiMmQyMzliZmNmMTZlOTk2MWFjYmJiNDg1OGIyZDg1OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtNjMsMTEgKzYz
LDExIEBAIHZvaWQgRnVuY3Rpb25Qcm90b3R5cGU6OmFkZEZ1bmN0aW9uUHJvcGVydGllcyhFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgSlNGdW5jdGlvbiogdG9TdHJpbmdG
dW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9w
ZXJ0eU5hbWVzLT50b1N0cmluZy5zdHJpbmcoKSwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk7
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRv
U3RyaW5nLCB0b1N0cmluZ0Z1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKLSAgICAqYXBwbHlGdW5jdGlvbiA9IHB1dERpcmVjdEJ1
aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFwcGx5UHVibGljTmFtZSgpLCBmdW5jdGlvblByb3Rv
dHlwZUFwcGx5Q29kZUdlbmVyYXRvcih2bSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICAqY2FsbEZ1bmN0aW9uID0gcHV0RGlyZWN0QnVp
bHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FsbFB1YmxpY05hbWUoKSwgZnVuY3Rpb25Qcm90b3R5
cGVDYWxsQ29kZUdlbmVyYXRvcih2bSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5iaW5kLCBmdW5j
dGlvblByb3RvdHlwZUJpbmRDb2RlR2VuZXJhdG9yKHZtKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgICphcHBseUZ1bmN0aW9uID0gcHV0
RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXBwbHlQdWJsaWNOYW1lKCksIGZ1bmN0
aW9uUHJvdG90eXBlQXBwbHlDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgKmNhbGxGdW5jdGlv
biA9IHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxP
YmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmNhbGxQdWJsaWNOYW1lKCks
IGZ1bmN0aW9uUHJvdG90eXBlQ2FsbENvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJl
Y3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCB2bS5w
cm9wZXJ0eU5hbWVzLT5iaW5kLCBmdW5jdGlvblByb3RvdHlwZUJpbmRDb2RlR2VuZXJhdG9yKHZt
KS52YWx1ZSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7CiAKLSAgICAqaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZnVuY3Rpb25Qcm90b3R5cGVTeW1ib2xIYXNJbnN0YW5jZUNvZGVHZW5lcmF0b3Io
dm0pLCBnbG9iYWxPYmplY3QpOworICAgICpoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uID0gSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBmdW5jdGlvblByb3RvdHlwZVN5bWJvbEhhc0luc3RhbmNlQ29k
ZUdlbmVyYXRvcih2bSkudmFsdWUoKSwgZ2xvYmFsT2JqZWN0KTsKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aGFzSW5zdGFuY2VTeW1ib2wsICpo
YXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKaW5kZXggZDQ2NzRjMDE5ZDg2NDgwNGY0YzY2Njg1ZGE5ZGY5NjVmZDFlZDlj
Ny4uZTdjYTc1OGI4M2QxYTBjYmEzYWRlNmI3MjFmNGRlMzQ3ZTZiMjUzYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNDQxLDI0
ICs0NDEsMjQgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgIH0p
OwogICAgIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmluaXRMYXRlcigKICAgICAgICAgW10g
KGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rpb24+JiBpbml0KSB7Ci0gICAgICAgICAgICBpbml0
LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwgYXJyYXlQcm90b3R5cGVWYWx1ZXNDb2Rl
R2VuZXJhdG9yKGluaXQudm0pLCBpbml0Lm93bmVyKSk7CisgICAgICAgICAgICBpbml0LnNldChK
U0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwgYXJyYXlQcm90b3R5cGVWYWx1ZXNDb2RlR2VuZXJh
dG9yKGluaXQudm0pLnZhbHVlKCksIGluaXQub3duZXIpKTsKICAgICAgICAgfSk7CiAgICAgbV9p
bml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IElu
aXRpYWxpemVyPEpTRnVuY3Rpb24+JiBpbml0KSB7Ci0gICAgICAgICAgICBpbml0LnNldChKU0Z1
bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwgcHJvbWlzZU9wZXJhdGlvbnNJbml0aWFsaXplUHJvbWlz
ZUNvZGVHZW5lcmF0b3IoaW5pdC52bSksIGluaXQub3duZXIpKTsKKyAgICAgICAgICAgIGluaXQu
c2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBwcm9taXNlT3BlcmF0aW9uc0luaXRpYWxp
emVQcm9taXNlQ29kZUdlbmVyYXRvcihpbml0LnZtKS52YWx1ZSgpLCBpbml0Lm93bmVyKSk7CiAg
ICAgICAgIH0pOwogCiAgICAgbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24uaW5pdExhdGVyKAog
ICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKLSAgICAg
ICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBpdGVyYXRvckhlbHBl
cnNQZXJmb3JtSXRlcmF0aW9uQ29kZUdlbmVyYXRvcihpbml0LnZtKSwgaW5pdC5vd25lcikpOwor
ICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGl0ZXJhdG9y
SGVscGVyc1BlcmZvcm1JdGVyYXRpb25Db2RlR2VuZXJhdG9yKGluaXQudm0pLnZhbHVlKCksIGlu
aXQub3duZXIpKTsKICAgICAgICAgfSk7CiAKICAgICBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24u
aW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGlu
aXQpIHsKLSAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBw
cm9taXNlQ29uc3RydWN0b3JSZXNvbHZlQ29kZUdlbmVyYXRvcihpbml0LnZtKSwgaW5pdC5vd25l
cikpOworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIHBy
b21pc2VDb25zdHJ1Y3RvclJlc29sdmVDb2RlR2VuZXJhdG9yKGluaXQudm0pLnZhbHVlKCksIGlu
aXQub3duZXIpKTsKICAgICAgICAgfSk7CiAKLSAgICBtX25ld1Byb21pc2VDYXBhYmlsaXR5RnVu
Y3Rpb24uc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHByb21pc2VPcGVyYXRp
b25zTmV3UHJvbWlzZUNhcGFiaWxpdHlDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcykpOworICAgIG1f
bmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgcHJvbWlzZU9wZXJhdGlvbnNOZXdQcm9taXNlQ2FwYWJpbGl0eUNvZGVHZW5lcmF0
b3Iodm0pLnZhbHVlKCksIHRoaXMpKTsKICAgICBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5
bWJvbEZ1bmN0aW9uLnNldCh2bSwgdGhpcywgaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7CiAg
ICAgbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlci5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChj
b25zdCBJbml0aWFsaXplcjxHZXR0ZXJTZXR0ZXI+JiBpbml0KSB7CkBAIC00ODksNyArNDg5LDcg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9mdW5jdGlvblByb3Rv
dHlwZS0+aW5pdFJlc3RyaWN0ZWRQcm9wZXJ0aWVzKGV4ZWMsIHRoaXMpOwogCiAgICAgbV9zcGVj
aWVzR2V0dGVyU2V0dGVyLnNldCh2bSwgdGhpcywgR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIHRo
aXMpKTsKLSAgICBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXItPnNldEdldHRlcih2bSwgdGhpcywgSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPcGVyYXRpb25zU3BlY2llc0dldHRlckNvZGVHZW5l
cmF0b3Iodm0pLCB0aGlzKSk7CisgICAgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLT5zZXRHZXR0ZXIo
dm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT3BlcmF0aW9uc1NwZWNpZXNH
ZXR0ZXJDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpLCB0aGlzKSk7CiAKICAgICBtX3R5cGVkQXJy
YXlQcm90by5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxKU1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlPiYgaW5pdCkgewpAQCAtNTExLDcgKzUxMSw3IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgICAgICBbXSAoTGF6eUNsYXNzU3RydWN0dXJl
OjpJbml0aWFsaXplciYgaW5pdCkgeyBcCiAgICAgICAgICAgICBpbml0LnNldFByb3RvdHlwZShK
UyAjIyB0eXBlICMjIEFycmF5UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5nbG9iYWws
IEpTICMjIHR5cGUgIyMgQXJyYXlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBp
bml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm1fdHlwZWRBcnJheVByb3RvLmdldChpbml0Lmdsb2Jh
bCkpKSk7IFwKICAgICAgICAgICAgIGluaXQuc2V0U3RydWN0dXJlKEpTICMjIHR5cGUgIyMgQXJy
YXk6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5wcm90b3R5cGUp
KTsgXAotICAgICAgICAgICAgaW5pdC5zZXRDb25zdHJ1Y3RvcihKUyAjIyB0eXBlICMjIEFycmF5
Q29uc3RydWN0b3I6OmNyZWF0ZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgSlMgIyMgdHlwZSAjIyBB
cnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGlu
aXQuZ2xvYmFsLT5tX3R5cGVkQXJyYXlTdXBlckNvbnN0cnVjdG9yLmdldChpbml0Lmdsb2JhbCkp
LCBpbml0LnByb3RvdHlwZSwgQVNDSUlMaXRlcmFsKCN0eXBlICJBcnJheSIpLCB0eXBlZEFycmF5
Q29uc3RydWN0b3JBbGxvY2F0ZSAjIyB0eXBlICMjIEFycmF5Q29kZUdlbmVyYXRvcihpbml0LnZt
KSkpOyBcCisgICAgICAgICAgICBpbml0LnNldENvbnN0cnVjdG9yKEpTICMjIHR5cGUgIyMgQXJy
YXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBKUyAjIyB0eXBlICMj
IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lmdsb2JhbCwg
aW5pdC5nbG9iYWwtPm1fdHlwZWRBcnJheVN1cGVyQ29uc3RydWN0b3IuZ2V0KGluaXQuZ2xvYmFs
KSksIGluaXQucHJvdG90eXBlLCBBU0NJSUxpdGVyYWwoI3R5cGUgIkFycmF5IiksIHR5cGVkQXJy
YXlDb25zdHJ1Y3RvckFsbG9jYXRlICMjIHR5cGUgIyMgQXJyYXlDb2RlR2VuZXJhdG9yKGluaXQu
dm0pLnZhbHVlKCkpKTsgXAogICAgICAgICAgICAgaW5pdC5nbG9iYWwtPnB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKGluaXQudm0sIGluaXQudm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkudHlwZSAjIyBBcnJheVByaXZhdGVOYW1lKCksIGluaXQuY29uc3RydWN0b3IsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsgXAogICAgICAgICB9
KTsKICAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoSU5J
VF9UWVBFRF9BUlJBWV9MQVRFUikKQEAgLTgzMyw3ICs4MzMsNyBAQCBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENv
bnN0cnVjdAogICAgIEpTT2JqZWN0KiByZWdFeHBTeW1ib2xSZXBsYWNlID0gYXNPYmplY3QobV9y
ZWdFeHBQcm90b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cmVwbGFjZVN5
bWJvbCkuYXNDZWxsKCkpOwogICAgIG1fcmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlLnNldCh2bSwg
dGhpcywgcmVnRXhwU3ltYm9sUmVwbGFjZSk7CiAKLSNkZWZpbmUgQ1JFQVRFX1BSSVZBVEVfR0xP
QkFMX0ZVTkNUSU9OKG5hbWUsIGNvZGUpIEpTRnVuY3Rpb24qIG5hbWUgIyMgUHJpdmF0ZUZ1bmN0
aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjb2RlICMjIENvZGVHZW5lcmF0b3Iodm0pLCB0
aGlzKTsKKyNkZWZpbmUgQ1JFQVRFX1BSSVZBVEVfR0xPQkFMX0ZVTkNUSU9OKG5hbWUsIGNvZGUp
IEpTRnVuY3Rpb24qIG5hbWUgIyMgUHJpdmF0ZUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBjb2RlICMjIENvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIHRoaXMpOwogICAgIEpTQ19G
T1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fUFJJVkFURV9HTE9CQUxfTkFNRShDUkVBVEVfUFJJVkFU
RV9HTE9CQUxfRlVOQ1RJT04pCiAjdW5kZWYgQ1JFQVRFX1BSSVZBVEVfR0xPQkFMX0ZVTkNUSU9O
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCA0MmM4
ODhlNmM0OTRlNmQ0OTczZTZhYWMzNjkzMWM4M2JjOWFjOTBkLi42YWQ2YTMwNWFlZDI5ZDNhN2Y1
OThiZmMyYmQ5MDA2MzBhOTE1YWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCkBAIC0yMDI5LDEyICsyMDI5LDE3IEBAIGJvb2wgSlNPYmplY3Q6OmdldFBy
aW1pdGl2ZU51bWJlcihFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJiBy
ZXN1CiAgICAgcmV0dXJuICFyZXN1bHQuaXNTdHJpbmcoKTsKIH0KIAotYm9vbCBKU09iamVjdDo6
Z2V0T3duU3RhdGljUHJvcGVydHlTbG90KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU09iamVjdDo6Z2V0T3duU3RhdGljUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGZvciAoYXV0byogaW5mbyA9IGNsYXNz
SW5mbyh2bSk7IGluZm87IGluZm8gPSBpbmZvLT5wYXJlbnRDbGFzcykgewogICAgICAgICBpZiAo
YXV0byogdGFibGUgPSBpbmZvLT5zdGF0aWNQcm9wSGFzaFRhYmxlKSB7Ci0gICAgICAgICAgICBp
ZiAoZ2V0U3RhdGljUHJvcGVydHlTbG90RnJvbVRhYmxlKHZtLCB0YWJsZS0+Y2xhc3NGb3JUaGlz
LCAqdGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgICAgICAgICBpZiAoZ2V0
U3RhdGljUHJvcGVydHlTbG90RnJvbVRhYmxlKGV4ZWMsIHRhYmxlLT5jbGFzc0ZvclRoaXMsICp0
YWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICAgICAgICAgIEVYQ0VQ
VElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGZhbHNlKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzIw
LDYgKzIzMjUsNyBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMoRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIEFTU0VSVCghc3RhdGljUHJvcGVydGllc1JlaWZpZWQoKSk7
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICAvLyBJZiB0aGlzIG9iamVjdCdzIENsYXNzSW5mbyBoYXMgbm8g
c3RhdGljIHByb3BlcnRpZXMsIHRoZW4gbm90aGluZyB0byByZWlmeSEKICAgICAvLyBXZSBjYW4g
c2FmZWx5IHNldCB0aGUgZmxhZyB0byBhdm9pZCB0aGUgZXhwZW5zaXZlIGNoZWNrIGFnYWluIGlu
IHRoZSBmdXR1cmUuCkBAIC0yMzQwLDggKzIzNDYsMTAgQEAgdm9pZCBKU09iamVjdDo6cmVpZnlB
bGxTdGF0aWNQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIHVuc2lnbmVk
IGF0dHJpYnV0ZXM7CiAgICAgICAgICAgICBhdXRvIGtleSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCB2YWx1ZS5tX2tleSk7CiAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQg
PSBnZXREaXJlY3RPZmZzZXQodm0sIGtleSwgYXR0cmlidXRlcyk7Ci0gICAgICAgICAgICBpZiAo
IWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKLSAgICAgICAgICAgICAgICByZWlmeVN0YXRpY1Byb3Bl
cnR5KHZtLCBoYXNoVGFibGUtPmNsYXNzRm9yVGhpcywga2V5LCB2YWx1ZSwgKnRoaXMpOworICAg
ICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKKyAgICAgICAgICAgICAgICBy
ZWlmeVN0YXRpY1Byb3BlcnR5KHZtLCBleGVjLCBoYXNoVGFibGUtPmNsYXNzRm9yVGhpcywga2V5
LCB2YWx1ZSwgKnRoaXMpOworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IGMyZWI4ZTY5MzY0MjlmNGY2YWNl
Zjc3NzU0YmY2MzZkMzNlYTM2NzQuLjAyNDVlNWE2ZWU4MGM4YTVkNzkzMTM3MDg2NjUyMjBiZDMy
ZjYxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtOTQs
NyArOTQsNyBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGZyaWVuZCBj
bGFzcyBKU0NlbGw7CiAgICAgZnJpZW5kIGNsYXNzIEpTRmluYWxPYmplY3Q7CiAgICAgZnJpZW5k
IGNsYXNzIE1hcmtlZEJsb2NrOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIGZyaWVuZCBib29sIHNl
dFVwU3RhdGljRnVuY3Rpb25TbG90KFZNJiwgY29uc3QgSGFzaFRhYmxlVmFsdWUqLCBKU09iamVj
dCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
ZnJpZW5kIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSGFz
aFRhYmxlVmFsdWUqLCBKU09iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAK
ICAgICBlbnVtIFB1dE1vZGUgewogICAgICAgICBQdXRNb2RlUHV0LApAQCAtMTAyMiwxMSArMTAy
MiwxMSBAQCBwcml2YXRlOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIE5FVkVSX0lOTElORSBib29s
IHB1dElubGluZVNsb3coRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKIAogICAgIGJvb2wgZ2V0Tm9uSW5kZXhQcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBib29sIGdldE93bk5vbkluZGV4
UHJvcGVydHlTbG90KFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKKyAgICBib29sIGdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBmaWxsR2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xvdCYsIEpTQ2VsbCosIHVu
c2lnbmVkLCBQcm9wZXJ0eU9mZnNldCk7CiAgICAgdm9pZCBmaWxsQ3VzdG9tR2V0dGVyUHJvcGVy
dHlTbG90KFZNJiwgUHJvcGVydHlTbG90JiwgQ3VzdG9tR2V0dGVyU2V0dGVyKiwgdW5zaWduZWQs
IFN0cnVjdHVyZSopOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRPd25TdGF0aWNQ
cm9wZXJ0eVNsb3QoVk0mLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgZ2V0T3duU3RhdGljUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RydWN0IFByb3BlcnR5SGFzaEVudHJ5
IHsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiB0YWJsZTsKICAgICAgICAgY29uc3QgSGFzaFRh
YmxlVmFsdWUqIHZhbHVlOwpAQCAtMTMxMywxNCArMTMxMywxNSBAQCBpbmxpbmUgSlNWYWx1ZSBK
U09iamVjdDo6Z2V0UHJvdG90eXBlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogCiAvLyBJdCBp
cyBzYWZlIHRvIGNhbGwgdGhpcyBtZXRob2Qgd2l0aCBhIFByb3BlcnR5TmFtZSB0aGF0IGlzIGFj
dHVhbGx5IGFuIGluZGV4LAogLy8gYnV0IGlmIHNvIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZSAo
ZG9lc24ndCBzZWFyY2ggaW5kZXggc3RvcmFnZSkuCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmpl
Y3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK0FMV0FZ
U19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
dW5zaWduZWQgYXR0cmlidXRlczsKICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1
cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKICAgICBpZiAoIWlzVmFsaWRP
ZmZzZXQob2Zmc2V0KSkgewogICAgICAgICBpZiAoIVR5cGVJbmZvOjpoYXNTdGF0aWNQcm9wZXJ0
eVRhYmxlKGlubGluZVR5cGVGbGFncygpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgcmV0dXJuIGdldE93blN0YXRpY1Byb3BlcnR5U2xvdCh2bSwgcHJvcGVydHlOYW1lLCBz
bG90KTsKKyAgICAgICAgcmV0dXJuIGdldE93blN0YXRpY1Byb3BlcnR5U2xvdChleGVjLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICAKICAgICAvLyBnZXRQcm9wZXJ0eVNsb3QgcmVs
aWVzIG9uIHRoaXMgbWV0aG9kIG5ldmVyIHJldHVybmluZyBpbmRleCBwcm9wZXJ0aWVzIQpAQCAt
MTM3MCwxOSArMTM3MSwyNCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OmZpbGxDdXN0
b21HZXR0ZXJQcm9wZXJ0eVNsb3QoVk0mIHZtLCBQcm9wZXJ0eVNsb3QmCiBBTFdBWVNfSU5MSU5F
IGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG9iamVjdC0+c3Ry
dWN0dXJlKHZtKTsKLSAgICBpZiAob2JqZWN0LT5nZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdCh2
bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQorICAgIGlmIChvYmplY3QtPmdldE93
bk5vbkluZGV4UHJvcGVydHlTbG90KGV4ZWMsIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzbG90
KSkgeworICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBm
YWxzZSk7CiAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRl
eChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gZ2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eChvYmplY3QsIGV4ZWMsIGluZGV4LnZhbHVlKCksIHNsb3QpOwogICAgIHJldHVybiBmYWxzZTsK
IH0KIAogLy8gSXQgbWF5IHNlZW0gY3JhenkgdG8gaW5saW5lIGEgZnVuY3Rpb24gdGhpcyBsYXJn
ZSBidXQgaXQgbWFrZXMgYSBiaWcgZGlmZmVyZW5jZQotLy8gc2luY2UgdGhpcyBpcyBmdW5jdGlv
biB2ZXJ5IGhvdCBpbiB2YXJpYWJsZSBsb29rdXAKKy8vIHNpbmNlIHRoaXMgZnVuY3Rpb24gaXMg
dmVyeSBob3QgaW4gdmFyaWFibGUgbG9va3VwCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6
OmdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBzdHJ1Y3R1
cmVJRFRhYmxlID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCk7CiAgICAgSlNPYmplY3QqIG9i
amVjdCA9IHRoaXM7CiAgICAgd2hpbGUgKHRydWUpIHsKQEAgLTEzOTUsMTIgKzE0MDEsMTYgQEAg
QUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGUKICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0UHJvcGVy
dHlTbG90KGV4ZWMsIGluZGV4LnZhbHVlKCksIHNsb3QpOwogICAgICAgICAgICAgLy8gU2FmZSB0
byBjb250aW51ZSBzZWFyY2hpbmcgZnJvbSBjdXJyZW50IHBvc2l0aW9uOyBjYWxsIGdldE5vbklu
ZGV4UHJvcGVydHlTbG90IHRvIGF2b2lkCiAgICAgICAgICAgICAvLyBwYXJzaW5nIHRoZSBpbnQg
YWdhaW4uCisgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgICAgICByZXR1cm4g
b2JqZWN0LT5nZXROb25JbmRleFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChvYmplY3QtPnR5cGUoKSAhPSBQcm94eU9iamVj
dFR5cGUpOwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0cnVjdHVyZUlEVGFibGUu
Z2V0KG9iamVjdC0+c3RydWN0dXJlSUQoKSk7Ci0gICAgICAgIGlmIChvYmplY3QtPmdldE93bk5v
bkluZGV4UHJvcGVydHlTbG90KHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisg
ICAgICAgIGlmIChvYmplY3QtPmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KGV4ZWMsIHN0cnVj
dHVyZSwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICAgICAgRVhDRVBUSU9OX0FTU0VS
VCghc2NvcGUuZXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAv
LyBGSVhNRTogVGhpcyBkb2Vzbid0IGxvb2sgbGlrZSBpdCdzIGZvbGxvd2luZyB0aGUgc3BlY2lm
aWNhdGlvbjoKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3MjU3MgogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHN0cnVjdHVyZS0+c3RvcmVk
UHJvdG90eXBlKG9iamVjdCk7CkBAIC0xNjAxLDcgKzE2MTEsNyBAQCBKU19FWFBPUlRfUFJJVkFU
RSBORVZFUl9JTkxJTkUgYm9vbCBvcmRpbmFyeVNldFNsb3coRXhlY1N0YXRlKiwgSlNPYmplY3Qq
LCBQcm9wZQogCiAjZGVmaW5lIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElP
Tihqc05hbWUsIGdlbmVyYXRvck5hbWUsIGF0dHJpYnV0ZXMpIFwKICAgICBwdXREaXJlY3RCdWls
dGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihcCi0gICAgICAgIHZtLCBnbG9iYWxPYmplY3Qs
IG1ha2VJZGVudGlmaWVyKHZtLCAoanNOYW1lKSksIChnZW5lcmF0b3JOYW1lKSh2bSksIChhdHRy
aWJ1dGVzKSkKKyAgICAgICAgdm0sIGdsb2JhbE9iamVjdCwgbWFrZUlkZW50aWZpZXIodm0sIChq
c05hbWUpKSwgKGdlbmVyYXRvck5hbWUpKHZtKS52YWx1ZSgpLCAoYXR0cmlidXRlcykpCiAKIC8v
IEhlbHBlciBmb3IgZGVmaW5pbmcgbmF0aXZlIGdldHRlcnMgb24gcHJvcGVydGllcy4KICNkZWZp
bmUgSlNDX05BVElWRV9JTlRSSU5TSUNfR0VUVEVSKGpzTmFtZSwgY3BwTmFtZSwgYXR0cmlidXRl
cywgaW50cmluc2ljKSAgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdElubGluZXMuaAppbmRleCA1ZTI3MDFmMTdhNDMzZTMyZDFiYzZlOWM4N2E0YTU1ODlkNGYz
ZjhmLi4zZjA5YTgxYjA1ZjYwNzlkYjcyZmM2M2M3MmU4ZDU5ZTlmNWQ2OTYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaApAQCAtMTQwLDgg
KzE0MCwxMSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE5vbkluZGV4UHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogICAgIHdoaWxlICh0cnVlKSB7CiAg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3RydWN0dXJlSURUYWJsZS5nZXQob2JqZWN0
LT5zdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAgaWYgKExJS0VMWSghVHlwZUluZm86Om92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdChvYmplY3QtPmlubGluZVR5cGVGbGFncygpKSkpIHsKLSAgICAg
ICAgICAgIGlmIChvYmplY3QtPmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KHZtLCBzdHJ1Y3R1
cmUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgICAgICAgICBpZiAob2JqZWN0LT5nZXRPd25O
b25JbmRleFByb3BlcnR5U2xvdChleGVjLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCkp
IHsKKyAgICAgICAgICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBib29sIGhhc1Nsb3QgPSBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5tZXRob2RU
YWJsZS5nZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAppbmRleCAzZjdmM2YxNDk3ZDBhYTJj
OWU1MzQ0ZTdhM2E4ZWY0MGIxNjBmODBjLi4wYTk5ZDgwZjliMTRiNjdhMDdlN2MwMjI4MTA5YWUw
ODZjNzkwMzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Nj
b3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcApA
QCAtMTU2LDYgKzE1Niw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhYnN0cmFjdEFjY2VzcyhFeGVj
U3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBjb25zdCBJZGVudGlmCiAKICAgICAgICAgUHJv
cGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5KTsKICAgICAgICAgYm9vbCBoYXNPd25Qcm9wZXJ0eSA9IGdsb2JhbE9i
amVjdC0+Z2V0T3duUHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgZXhlYywgaWRlbnQsIHNsb3Qp
OworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAg
ICAgaWYgKCFoYXNPd25Qcm9wZXJ0eSkgewogICAgICAgICAgICAgb3AgPSBSZXNvbHZlT3AobWFr
ZVR5cGUoVW5yZXNvbHZlZFByb3BlcnR5LCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyksIDAsIDAs
IDAsIDAsIDApOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3Bw
CmluZGV4IDc1YjBjMTFmMzZlMjZhN2JhNDkzNDE1ODU1MjYzOGI4MWUxNWYxZTIuLjg3ZmRhM2Fm
OGQ5MzAzN2VhY2QyZGEyNjg3ZWEyNTA0MDc5NjZkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3Bw
CkBAIC0zMzAsNyArMzMwLDcgQEAgdm9pZCBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICB0b1N0cmlu
Z1RhZ0FjY2Vzc29yLT5zZXRHZXR0ZXIodm0sIGdsb2JhbE9iamVjdCwgdG9TdHJpbmdUYWdGdW5j
dGlvbik7CiAgICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nvcih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+dG9TdHJpbmdUYWdTeW1ib2wsIHRvU3RyaW5nVGFnQWNjZXNzb3IsIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0
cmlidXRlOjpBY2Nlc3Nvcik7CiAKLSAgICBKU0Z1bmN0aW9uKiB2YWx1ZXNGdW5jdGlvbiA9IEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgdHlwZWRBcnJheVByb3RvdHlwZVZhbHVlc0NvZGVHZW5lcmF0
b3Iodm0pLCBnbG9iYWxPYmplY3QpOworICAgIEpTRnVuY3Rpb24qIHZhbHVlc0Z1bmN0aW9uID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0eXBlZEFycmF5UHJvdG90eXBlVmFsdWVzQ29kZUdlbmVy
YXRvcih2bSkudmFsdWUoKSwgZ2xvYmFsT2JqZWN0KTsKIAogICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJs
aWNOYW1lKCksIHZhbHVlc0Z1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCB2YWx1ZXNGdW5jdGlvbiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKaW5kZXggOTY2YzcxZWIxMGE4YTg0ODQ3ZTg3
Y2I2MTIzZTQwODc1MTc4YmYwNi4uOGVhYzBmOTRjNTc2MTQ4MWEwN2YzMGIyYjJhNTVjNmM0ODk1
NzJlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCkBAIC0zMyw3
ICszMyw3IEBAIHZvaWQgcmVpZnlTdGF0aWNBY2Nlc3NvcihWTSYgdm0sIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlJiB2YWx1ZSwgSlNPYmplY3QmIHRoaXNPYmplCiAgICAgaWYgKHZhbHVlLmFjY2Vzc29y
R2V0dGVyKCkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBudWxscHRyOwogICAg
ICAgICBpZiAodmFsdWUuYXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkJ1aWx0aW4p
Ci0gICAgICAgICAgICBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdmFsdWUuYnVp
bHRpbkFjY2Vzc29yR2V0dGVyR2VuZXJhdG9yKCkodm0pLCBnbG9iYWxPYmplY3QpOworICAgICAg
ICAgICAgZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHZhbHVlLmJ1aWx0aW5BY2Nl
c3NvckdldHRlckdlbmVyYXRvcigpKHZtKS52YWx1ZSgpLCBnbG9iYWxPYmplY3QpOwogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIFN0cmluZyBnZXR0ZXJOYW1lID0gdHJ5TWFrZVN0cmluZyhB
U0NJSUxpdGVyYWwoImdldCAiKSwgU3RyaW5nKCpwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSk7
CiAgICAgICAgICAgICBpZiAoIWdldHRlck5hbWUpCkBAIC00NSw4ICs0NSwxMCBAQCB2b2lkIHJl
aWZ5U3RhdGljQWNjZXNzb3IoVk0mIHZtLCBjb25zdCBIYXNoVGFibGVWYWx1ZSYgdmFsdWUsIEpT
T2JqZWN0JiB0aGlzT2JqZQogICAgIHRoaXNPYmplY3QucHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nv
cih2bSwgcHJvcGVydHlOYW1lLCBhY2Nlc3NvciwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1
ZS5hdHRyaWJ1dGVzKCkpKTsKIH0KIAotYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChWTSYg
dm0sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBjb25zdCBIYXNoVGFibGVWYWx1ZSogZW50
cnksIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBl
bnRyeSwgSlNPYmplY3QqIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBBU1NFUlQodGhpc09iamVjdC0+
Z2xvYmFsT2JqZWN0KCkpOwogICAgIEFTU0VSVChlbnRyeS0+YXR0cmlidXRlcygpICYgUHJvcGVy
dHlBdHRyaWJ1dGU6OkJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5KTsK
ICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwpAQCAtNTksNyArNjEsOCBAQCBib29sIHNldFVwU3Rh
dGljRnVuY3Rpb25TbG90KFZNJiB2bSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGNvbnN0
IEhhc2hUYWJsZQogICAgICAgICBpZiAodGhpc09iamVjdC0+c3RhdGljUHJvcGVydGllc1JlaWZp
ZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZWlmeVN0YXRpY1By
b3BlcnR5KHZtLCBjbGFzc0luZm8sIHByb3BlcnR5TmFtZSwgKmVudHJ5LCAqdGhpc09iamVjdCk7
CisgICAgICAgIHJlaWZ5U3RhdGljUHJvcGVydHkodm0sIGV4ZWMsIGNsYXNzSW5mbywgcHJvcGVy
dHlOYW1lLCAqZW50cnksICp0aGlzT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwogCiAgICAgICAgIG9mZnNldCA9IHRoaXNPYmplY3QtPmdldERpcmVj
dE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgaWYgKCFpc1Zh
bGlkT2Zmc2V0KG9mZnNldCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xvb2t1cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgK
aW5kZXggYmZlZTUxZTBiMWFjYjQ0NmEzNTA4MmI0NWJmMDFlOTM4YTY4OGFmNy4uODVmYmUxZGJm
YWExNmI5YmU4N2M2NTZiOGFmNmJjNGQ2NTdhMzYxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTG9va3VwLmgKQEAgLTMxLDEwICszMSwxMiBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkxhenlQcm9wZXJ0eS5o
IgorI2luY2x1ZGUgIlBhcnNlckVycm9yLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCiAj
aW5jbHVkZSAiUHV0UHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiVHlwZUVycm9yLmgiCiAjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKQEAgLTQ3LDcgKzQ5LDcgQEAgc3RydWN0IENvbXBhY3RIYXNoSW5kZXgg
ewogLy8gaWUuIHR5cGVkZWYgSlNWYWx1ZSAoKkdldEZ1bmN0aW9uKShFeGVjU3RhdGUqLCBKU09i
amVjdCogYmFzZU9iamVjdCkKIHR5cGVkZWYgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgR2V0
RnVuY3Rpb247CiB0eXBlZGVmIFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jIFB1dEZ1bmN0
aW9uOwotdHlwZWRlZiBGdW5jdGlvbkV4ZWN1dGFibGUqICgqQnVpbHRpbkdlbmVyYXRvcikoVk0m
KTsKK3R5cGVkZWYgRXhwZWN0ZWQ8RnVuY3Rpb25FeGVjdXRhYmxlKiwgUGFyc2VyRXJyb3I+ICgq
QnVpbHRpbkdlbmVyYXRvcikoVk0mKTsKIHR5cGVkZWYgSlNWYWx1ZSAoKkxhenlQcm9wZXJ0eUNh
bGxiYWNrKShWTSYsIEpTT2JqZWN0Kik7CiAKIC8vIEhhc2ggdGFibGUgZ2VuZXJhdGVkIGJ5IHRo
ZSBjcmVhdGVfaGFzaF90YWJsZSBzY3JpcHQuCkBAIC0yMDMsNyArMjA1LDcgQEAgc3RydWN0IEhh
c2hUYWJsZSB7CiAgICAgfQogfTsKIAotSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBzZXRVcFN0YXRp
Y0Z1bmN0aW9uU2xvdChWTSYsIGNvbnN0IENsYXNzSW5mbyosIGNvbnN0IEhhc2hUYWJsZVZhbHVl
KiwgSlNPYmplY3QqIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CitK
U19FWFBPUlRfUFJJVkFURSBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSos
IGNvbnN0IENsYXNzSW5mbyosIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiwgSlNPYmplY3QqIHRoaXNP
YmplY3QsIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIHJlaWZ5U3RhdGljQWNjZXNzb3IoVk0mLCBjb25zdCBIYXNoVGFibGVWYWx1ZSYsIEpTT2Jq
ZWN0JiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUpOwogCiBpbmxpbmUgQnVpbHRpbkdlbmVyYXRv
ciBIYXNoVGFibGVWYWx1ZTo6YnVpbHRpbkFjY2Vzc29yR2V0dGVyR2VuZXJhdG9yKCkgY29uc3QK
QEAgLTIyMCw3ICsyMjIsNyBAQCBpbmxpbmUgQnVpbHRpbkdlbmVyYXRvciBIYXNoVGFibGVWYWx1
ZTo6YnVpbHRpbkFjY2Vzc29yU2V0dGVyR2VuZXJhdG9yKCkgY29uc3QKICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxCdWlsdGluR2VuZXJhdG9yPihtX3ZhbHVlcy52YWx1ZTIpOwogfQogCi1p
bmxpbmUgYm9vbCBnZXRTdGF0aWNQcm9wZXJ0eVNsb3RGcm9tVGFibGUoVk0mIHZtLCBjb25zdCBD
bGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgSGFzaFRhYmxlJiB0YWJsZSwgSlNPYmplY3QqIHRo
aXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
K2lubGluZSBib29sIGdldFN0YXRpY1Byb3BlcnR5U2xvdEZyb21UYWJsZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBjb25zdCBIYXNoVGFibGUmIHRhYmxlLCBK
U09iamVjdCogdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIGlmICh0aGlzT2JqZWN0LT5zdGF0aWNQcm9wZXJ0aWVzUmVpZmll
ZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzAsNyArMjMyLDcgQEAgaW5saW5lIGJv
b2wgZ2V0U3RhdGljUHJvcGVydHlTbG90RnJvbVRhYmxlKFZNJiB2bSwgY29uc3QgQ2xhc3NJbmZv
KiBjbGFzc0luZm8sIGMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGVudHJ5LT5h
dHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbk9yRnVuY3Rpb25PckFjY2Vz
c29yT3JMYXp5UHJvcGVydHkpCi0gICAgICAgIHJldHVybiBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xv
dCh2bSwgY2xhc3NJbmZvLCBlbnRyeSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsK
KyAgICAgICAgcmV0dXJuIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KGV4ZWMsIGNsYXNzSW5mbywg
ZW50cnksIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICBpZiAoZW50cnkt
PmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIpIHsKICAg
ICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKGVu
dHJ5LT5hdHRyaWJ1dGVzKCkpLCBqc051bWJlcihlbnRyeS0+Y29uc3RhbnRJbnRlZ2VyKCkpKTsK
QEAgLTMxOSwxMyArMzIxLDMzIEBAIGlubGluZSBib29sIGxvb2t1cFB1dChFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBiYXNlCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWlubGluZSB2b2lkIHJlaWZ5U3RhdGljUHJvcGVydHkoVk0mIHZtLCBjb25z
dCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUs
IGNvbnN0IEhhc2hUYWJsZVZhbHVlJiB2YWx1ZSwgSlNPYmplY3QmIHRoaXNPYmopCitpbmxpbmUg
dm9pZCByZWlmeVN0YXRpY1Byb3BlcnR5KFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjSWZBdmFpbGFi
bGUsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3Bl
cnR5TmFtZSwgY29uc3QgSGFzaFRhYmxlVmFsdWUmIHZhbHVlLCBKU09iamVjdCYgdGhpc09iaikK
IHsKKyAgICBBU1NFUlQoZXhlY0lmQXZhaWxhYmxlID09IG51bGxwdHIgfHwgJnZtID09ICYoZXhl
Y0lmQXZhaWxhYmxlLT52bSgpKSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgaWYgKHZhbHVlLmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRl
OjpCdWlsdGluKSB7CiAgICAgICAgIGlmICh2YWx1ZS5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0
dHJpYnV0ZTo6QWNjZXNzb3IpCiAgICAgICAgICAgICByZWlmeVN0YXRpY0FjY2Vzc29yKHZtLCB2
YWx1ZSwgdGhpc09iaiwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
dGhpc09iai5wdXREaXJlY3RCdWlsdGluRnVuY3Rpb24odm0sIHRoaXNPYmouZ2xvYmFsT2JqZWN0
KCksIHByb3BlcnR5TmFtZSwgdmFsdWUuYnVpbHRpbkdlbmVyYXRvcigpKHZtKSwgYXR0cmlidXRl
c0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1dGVzKCkpKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBpZiAoRXhwZWN0ZWQ8RnVuY3Rpb25FeGVjdXRhYmxlKiwgUGFyc2VyRXJyb3I+IGYg
PSB2YWx1ZS5idWlsdGluR2VuZXJhdG9yKCkodm0pKQorICAgICAgICAgICAgICAgIHRoaXNPYmou
cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKHZtLCB0aGlzT2JqLmdsb2JhbE9iamVjdCgpLCBwcm9w
ZXJ0eU5hbWUsIGYudmFsdWUoKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1
dGVzKCkpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGV4ZWNJZkF2YWlsYWJsZSkgeworICAgICAg
ICAgICAgICAgIHN3aXRjaCAoZi5lcnJvcigpLnR5cGUoKSkgeworICAgICAgICAgICAgICAgIGNh
c2UgUGFyc2VyRXJyb3I6OlN0YWNrT3ZlcmZsb3c6CisgICAgICAgICAgICAgICAgICAgIHRocm93
U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWNJZkF2YWlsYWJsZSwgc2NvcGUpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgY2FzZSBQYXJzZXJFcnJvcjo6T3V0T2ZN
ZW1vcnk6CisgICAgICAgICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjSWZB
dmFpbGFibGUsIHNjb3BlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBkYXRhTG9nTG4oIkZhdGFsIHBhcnNlciBlcnJvciAocHJvYmFibHkgYSBzdGFj
ayBvdmVyZmxvdyksIGFuZCBubyBFeGVjU3RhdGUgYXZhaWxhYmxlIGZvciB0aHJvd2luZyBhIEpT
IGV4Y2VwdGlvbiIpOworICAgICAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDAwLDcgKzQyMiw3IEBAIGlu
bGluZSB2b2lkIHJlaWZ5U3RhdGljUHJvcGVydGllcyhWTSYgdm0sIGNvbnN0IENsYXNzSW5mbyog
Y2xhc3NJbmZvLCBjb25zdCBIYXNoCiAgICAgICAgIGlmICghdmFsdWUubV9rZXkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgYXV0byBrZXkgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHZhbHVlLm1fa2V5KSwgc3RybGVu
KHZhbHVlLm1fa2V5KSk7Ci0gICAgICAgIHJlaWZ5U3RhdGljUHJvcGVydHkodm0sIGNsYXNzSW5m
bywga2V5LCB2YWx1ZSwgdGhpc09iaik7CisgICAgICAgIHJlaWZ5U3RhdGljUHJvcGVydHkodm0s
IG51bGxwdHIsIGNsYXNzSW5mbywga2V5LCB2YWx1ZSwgdGhpc09iaik7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAppbmRleCA1
MzU2OGI3YTNhYWU0YjEyNmNjZTMzOWQzMmQwNDcwZWVhNzZhMTgzLi5mZTJiNmJlZTEzMjBjYjI1
NTdhN2RlNTMyZmZkOTgwNGRiMzI1ZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hcFByb3RvdHlwZS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBNYXBQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
ICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0UHJpdmF0ZU5hbWUoKSwgbWFwUHJvdG9G
dW5jR2V0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgMSwgSlNNYXBHZXRJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNU
SU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5z
ZXRQcml2YXRlTmFtZSgpLCBtYXBQcm90b0Z1bmNTZXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyLCBKU01hcFNldEludHJpbnNpYyk7CiAKLSAg
ICBKU0Z1bmN0aW9uKiBlbnRyaWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBtYXBQcm90b3R5
cGVFbnRyaWVzQ29kZUdlbmVyYXRvcih2bSksIGdsb2JhbE9iamVjdCk7CisgICAgSlNGdW5jdGlv
biogZW50cmllcyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgbWFwUHJvdG90eXBlRW50cmllc0Nv
ZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIGdsb2JhbE9iamVjdCk7CiAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJp
ZXNQdWJsaWNOYW1lKCksIGVudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGVudHJpZXMsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpz
U3RyaW5nKCZ2bSwgIk1hcCIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NldFByb3RvdHlwZS5jcHAKaW5kZXggMjkzNDM5NjA4N2U2OGJmMzhjOTE4NzMxODA0ZjZmNmU3
MGIwN2Q2Yy4uZjJmMDVlM2ZmMGZlNGMzYWI5ZjJjYjZiZTA1MjlhNDQwYzJmZDg0MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCkBAIC02OCw3
ICs2OCw3IEBAIHZvaWQgU2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJ
T05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmhh
c1ByaXZhdGVOYW1lKCksIHNldFByb3RvRnVuY0hhcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEsIEpTU2V0SGFzSW50cmluc2ljKTsKICAgICBK
U0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYWRkUHJpdmF0ZU5hbWUoKSwgc2V0UHJvdG9GdW5jQWRk
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwg
SlNTZXRBZGRJbnRyaW5zaWMpOwogCi0gICAgSlNGdW5jdGlvbiogdmFsdWVzID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBzZXRQcm90b3R5cGVWYWx1ZXNDb2RlR2VuZXJhdG9yKHZtKSwgZ2xvYmFs
T2JqZWN0KTsKKyAgICBKU0Z1bmN0aW9uKiB2YWx1ZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IHNldFByb3RvdHlwZVZhbHVlc0NvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIGdsb2JhbE9iamVj
dCk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUoKSwgdmFsdWVzLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQ
dWJsaWNOYW1lKCksIHZhbHVlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgdmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggNzdmNjAzOTVjZjZhOTQyNmMxNjYwYmUwZWI4MDFl
ZjY2Y2FjNzRiZS4uMzZkYmQ0ZjI2YzQwZGJkYzEwZDdlMzkxNGZlYjA3YjkyNDM1YjIwZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjYsNyArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTRG9sbGFyVk0uaCIKIAotI2lu
Y2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5oIgorI2luY2x1ZGUgIkJ1aWx0aW5FeGVj
dXRhYmxlcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRPTUF0dHJpYnV0
ZUdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRPTUpJVEdldHRlclNldHRlci5oIgpAQCAtMTUy
Miw5ICsxNTIyLDggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DcmVhdGVCdWlsdGluKEV4ZWNTdGF0ZSogZXhlYykKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSA9IG1ha2VTb3VyY2UoZnVuY3Rpb25UZXh0LCB7IH0pOwotICAgIEpTRnVuY3Rpb24qIGZ1bmMg
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKHZtLCBzb3Vy
Y2UsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiZm9vIiksIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0KS0+bGluayh2bSwgc291cmNl
KSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoZnVuYyk7CisgICAgYXV0byB1bmxpbmtlZCA9IEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3Jl
YXRlRXhlY3V0YWJsZU9yQ3Jhc2godm0sIHNvdXJjZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sICJmb28iKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5u
b3RDb25zdHJ1Y3QpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCB1bmxpbmtlZC0+bGluayh2bSwgc291cmNlKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uQ3JlYXRlUm9vdChFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVj
dG9ycy5jcHAKaW5kZXggY2E5N2U5NjExZDAzMjJiNjUyZGNjZTRmNmVmOThlNDhhMmQ3MzM2ZC4u
MTRjMmJjZGU2OTI1N2JhYzI0MTZkYmU3YTNjM2FkNmJkM2JkYmIwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3Rv
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Q
cml2YXRlQ29uc3RydWN0b3JzLmNwcApAQCAtMTI0LDI3ICsxMjQsMjcgQEAgdGVtcGxhdGU8PiBj
b25zdCBDbGFzc0luZm8gSlNCdWlsdGluUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdFByaXZhdGVD
b25zdHJ1Y3RvcjoKIAogdGVtcGxhdGU8PiBGdW5jdGlvbkV4ZWN1dGFibGUqIEpTQnVpbHRpblJl
YWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlclByaXZhdGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4
ZWN1dGFibGUoSlNDOjpWTSYgdm0pCiB7Ci0gICAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtSW50ZXJu
YWxzUHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXJDb2RlR2VuZXJh
dG9yKHZtKTsKKyAgICByZXR1cm4gcmVhZGFibGVTdHJlYW1JbnRlcm5hbHNQcml2YXRlSW5pdGlh
bGl6ZVJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlckNvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCk7
CiB9CiAKIHRlbXBsYXRlPD4gRnVuY3Rpb25FeGVjdXRhYmxlKiBKU0J1aWx0aW5SZWFkYWJsZVN0
cmVhbURlZmF1bHRDb250cm9sbGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0
YWJsZShKU0M6OlZNJiB2bSkKIHsKLSAgICByZXR1cm4gcmVhZGFibGVTdHJlYW1JbnRlcm5hbHNQ
cml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJDb2RlR2VuZXJh
dG9yKHZtKTsKKyAgICByZXR1cm4gcmVhZGFibGVTdHJlYW1JbnRlcm5hbHNQcml2YXRlSW5pdGlh
bGl6ZVJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJDb2RlR2VuZXJhdG9yKHZtKS52YWx1
ZSgpOwogfQogCiB0ZW1wbGF0ZTw+IEZ1bmN0aW9uRXhlY3V0YWJsZSogSlNCdWlsdGluUmVhZGFi
bGVCeXRlU3RyZWFtQ29udHJvbGxlclByaXZhdGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1
dGFibGUoSlNDOjpWTSYgdm0pCiB7Ci0gICAgcmV0dXJuIHJlYWRhYmxlQnl0ZVN0cmVhbUludGVy
bmFsc1ByaXZhdGVJbml0aWFsaXplUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlckNvZGVHZW5l
cmF0b3Iodm0pOworICAgIHJldHVybiByZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNQcml2YXRl
SW5pdGlhbGl6ZVJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXJDb2RlR2VuZXJhdG9yKHZtKS52
YWx1ZSgpOwogfQogCiB0ZW1wbGF0ZTw+IEZ1bmN0aW9uRXhlY3V0YWJsZSogSlNCdWlsdGluUmVh
ZGFibGVTdHJlYW1CWU9CUmVhZGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0
YWJsZShKU0M6OlZNJiB2bSkKIHsKLSAgICByZXR1cm4gcmVhZGFibGVCeXRlU3RyZWFtSW50ZXJu
YWxzUHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXJDb2RlR2VuZXJhdG9y
KHZtKTsKKyAgICByZXR1cm4gcmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzUHJpdmF0ZUluaXRp
YWxpemVSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXJDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpOwog
fQogCiB0ZW1wbGF0ZTw+IEZ1bmN0aW9uRXhlY3V0YWJsZSogSlNCdWlsdGluUmVhZGFibGVTdHJl
YW1CWU9CUmVxdWVzdFByaXZhdGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUoSlND
OjpWTSYgdm0pCiB7Ci0gICAgcmV0dXJuIHJlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFsc1ByaXZh
dGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdENvZGVHZW5lcmF0b3Iodm0pOwor
ICAgIHJldHVybiByZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNQcml2YXRlSW5pdGlhbGl6ZVJl
YWRhYmxlU3RyZWFtQllPQlJlcXVlc3RDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpOwogfQogCiBK
U09iamVjdCogY3JlYXRlUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyUHJpdmF0ZUNvbnN0cnVj
dG9yKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNjI2
YTlmMGIyZDZmMDQzY2Y5MmJkZjMyZjI5NjI4OTI2MTE2ZTVlNC4uNGE2NDY5NGVmZjRjMTY1MTA0
ZGE4NmMyMDNjZTFmNjA2YjJlY2NiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTcxODcsNyArNzE4Nyw3IEBAIHN1YiBH
ZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcwogICAgIGlmIChJc0pTQnVpbHRpbkNvbnN0
cnVjdG9yKCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInRlbXBs
YXRlPD4gRnVuY3Rpb25FeGVjdXRhYmxlKiAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6aW5pdGlh
bGl6ZUV4ZWN1dGFibGUoVk0mIHZtKVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IntcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuICIgLiBHZXRK
U0J1aWx0aW5GdW5jdGlvbk5hbWVGcm9tU3RyaW5nKCRpbnRlcmZhY2UtPnR5cGUtPm5hbWUsICJp
bml0aWFsaXplIiAuICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUpIC4gIih2bSk7XG4iKTsKKyAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiAiIC4gR2V0SlNCdWlsdGluRnVuY3Rp
b25OYW1lRnJvbVN0cmluZygkaW50ZXJmYWNlLT50eXBlLT5uYW1lLCAiaW5pdGlhbGl6ZSIgLiAk
aW50ZXJmYWNlLT50eXBlLT5uYW1lKSAuICIodm0pLnZhbHVlKCk7XG4iKTsKICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAifVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIlxu
Iik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3Rvci5jcHAKaW5kZXggMTVlMmU0MDA1ZTVlNWQ5NDQzYjNlNjlhYjA2MDhmYmY2NDIz
NjM2OC4uNTBmZWZmYmIxYWYzMDcwZTA0MzUzZWYyZDNkOGY2MzMwZGZmNzg2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCkBA
IC04Miw3ICs4Miw3IEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVyCiAKIHRlbXBsYXRlPD4gRnVu
Y3Rpb25FeGVjdXRhYmxlKiBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0
cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZShWTSYgdm0pCiB7Ci0gICAgcmV0dXJuIHRlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckluaXRpYWxpemVUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3JDb2RlR2VuZXJhdG9yKHZtKTsKKyAgICByZXR1cm4gdGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9ySW5pdGlhbGl6ZVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3RvckNvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCk7CiB9CiAKIHRlbXBsYXRlPD4gY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIlRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcikgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCmluZGV4IGUyYWU1YmQ4YTQzY2MxZGM5NTc0YmI2M2Zh
NGYzNjVmZmEzNjE2NTIuLjgyNTNiYWJmMjE1OGIyYzI4Zjc5YmRhZTBmNjAwYjhlM2RiYzliMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtOTEsNyAr
OTEsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1
Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mCiAKIHRlbXBsYXRlPD4gRnVuY3Rpb25FeGVj
dXRhYmxlKiBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXpl
RXhlY3V0YWJsZShWTSYgdm0pCiB7Ci0gICAgcmV0dXJuIHRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckluaXRpYWxpemVUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb2RlR2VuZXJhdG9yKHZtKTsKKyAg
ICByZXR1cm4gdGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9ySW5pdGlhbGl6ZVRlc3RKU0J1aWx0aW5D
b25zdHJ1Y3RvckNvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCk7CiB9CiAKIHRlbXBsYXRlPD4gY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JD
b25zdHJ1Y3RvcikgfTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggN2JiMWUwNjQ2ZWRjNDUxODQ2NDVmZTVkODdhOWMyOWE2MGY4ODUzMC4u
MzVjOWE1MDE0NjYyYTVjNTU4NDU5NGFkMTIyZGE5ZDk4YjBhOWQxNSAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxOC0wNC0yMyAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAg
ICAgIEEgc3RhY2sgb3ZlcmZsb3cgaW4gdGhlIHBhcnNpbmcgb2YgYSBidWlsdGluIChjYWxsZWQg
YnkgY3JlYXRlRXhlY3V0YWJsZSkgY2F1c2UgYSBjcmFzaCBpbnN0ZWFkIG9mIGEgY2F0Y2hhYmxl
IGpzIGV4Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg0MDc0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNzE2NTg5Nz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBLZWl0aCBNaWxsZXIuCisKKyAgICAgICAgKiBzdHJlc3Mvc3RhY2stb3Zl
cmZsb3ctd2hpbGUtcGFyc2luZy1idWlsdGluLmpzOiBBZGRlZC4KKyAgICAgICAgKGYpOgorCiAy
MDE4LTA0LTIwICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAgICAgICBI
YW5kbGUgbW9yZSBKU09OIHN0cmluZ2lmeSBPT00KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L3N0YWNrLW92ZXJmbG93LXdoaWxlLXBhcnNpbmctYnVpbHRpbi5qcyBiL0pTVGVzdHMvc3RyZXNz
L3N0YWNrLW92ZXJmbG93LXdoaWxlLXBhcnNpbmctYnVpbHRpbi5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjIx
MDZmNDNiY2YyOTNjNWUyYjg1MDdiMDEwZTdlN2M0NTY0ZmQwCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3Mvc3RhY2stb3ZlcmZsb3ctd2hpbGUtcGFyc2luZy1idWlsdGluLmpzCkBA
IC0wLDAgKzEsMTMgQEAKKy8vQCBydW5EZWZhdWx0KCItLW1heFBlclRocmVhZFN0YWNrVXNhZ2U9
MTAwMDAwMCIsICItLXJlc2VydmVkWm9uZVNpemU9MCIpCisKK2Z1bmN0aW9uIGYoKSB7CisgICAg
dHJ5IHsKKyAgICAgICAgZigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgIE1hcC5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKCcnLCB7fSk7CisgICAgICAgIH0g
Y2F0Y2gge30KKyAgICB9Cit9CisKK2YoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339406</attachid>
            <date>2018-05-03 07:18:28 -0700</date>
            <delta_ts>2018-06-28 13:32:24 -0700</delta_ts>
            <desc>Patch without the controversial part</desc>
            <filename>bug-184074-20180503161826.patch</filename>
            <type>text/plain</type>
            <size>116035</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NDcwNjY4OGZiZDFlMGJlOGY0YWQ4MTcwMWVhNTYxYzRmODNhN2JlLi5kYjdiMmQ1M2ZhYjY3YmU2
NDA4NWRiY2IxMGY1ZWYzOWZmOGNjMDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAxOC0wNS0wMyAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUu
Y29tPgorCisgICAgICAgIEEgc3RhY2sgb3ZlcmZsb3cgaW4gdGhlIHBhcnNpbmcgb2YgYSBidWls
dGluIChjYWxsZWQgYnkgY3JlYXRlRXhlY3V0YWJsZSkgY2F1c2UgYSBjcmFzaCBpbnN0ZWFkIG9m
IGEgY2F0Y2hhYmxlIGpzIGV4Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MDc0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNzE2NTg5
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZWl0aCBNaWxsZXIgYW5kIEpGIEJhc3RpZW4uCisK
KyAgICAgICAgRml4aW5nIHRoaXMgcmVxdWlyZXMgZ2V0dGluZyB0aGUgUGFyc2VyRXJyb3IgKHdp
dGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZhaWx1cmUpIGFuZCBhbiBFeGVjU3RhdGUqICh0byB0
aHJvdyBhbiBleGNlcHRpb24pIGluIHRoZSBzYW1lIHBsYWNlLgorICAgICAgICBJdCBpcyBzdXJw
cmlzaW5nbHkgcGFpbmZ1bCwgd2l0aCBxdWl0ZSBhIGxvbmcgY2FsbCBzdGFjayBiZXR3ZWVuIHRo
ZSBsYXN0IGZ1bmN0aW9uIHdpdGggYW4gYWNjZXNzIHRvIGFuIEV4ZWNTdGF0ZSogYW5kIHRoZSBm
aXJzdCBmdW5jdGlvbiB3aXRoIHRoZSBQYXJzZXJFcnJvci4KKyAgICAgICAgRXZlbiB3b3JzZSwg
bWFueSBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIGdlbmVyYXRlZCBieSBtYWNyb3MsIHRoZW1zZWx2
ZXMgZ2VuZXJhdGVkIGJ5IGEgbWF6ZSBvZiBweXRob24gc2NyaXB0cy4KKyAgICAgICAgQXMgYSBy
ZXN1bHQsIHRoaXMgcGF0Y2ggaXMgZ3JvdGVzcXVlbHkgbGFyZ2UsIHdoaWxlIGFsbCBpdCBkb2Vz
IGlzIGFkZGluZyBlbm91Z2ggcGx1bWJpbmcgdG8gdGhyb3cgYSBwcm9wZXIgZXhjZXB0aW9uIGlu
IHRoaXMgc3BlY2lmaWMgY2FzZS4KKworICAgICAgICBUaGVyZSBhcmUgbm93IGJhcmUgY2FsbHMg
dG8gJy52YWx1ZSgpJyBvbiBzZXZlcmFsIHBhdGhzIHRoYXQgbWF5IGNyYXNoLiBJdCBpcyBub3Qg
YSBwcm9ibGVtIGluIG15IG9waW5pb24sIHNpbmNlIHdlIHByZXZpb3VzbHkgY3Jhc2hlZCBpbiBl
dmVyeSBjYXNlIHJlZ2FyZGxlc3Mgb2YgdGhlIHBhdGggdGhhdCB0b29rIHVzIHRvIGNyZWF0ZUV4
ZWN1dGFibGUgd2hlbiBlbmNvdW50ZXJpbmcgYSBzdGFjayBvdmVyZmxvdy4KKyAgICAgICAgSWYg
d2UgZXZlciBmaW5kIGFuIGV4YW1wbGUgdGhhdCBjYW4gY2F1c2UgdGhlc2UgY2FsbHMgdG8gZmFp
bCwgaXQgc2hvdWxkIGJlIGRvYWJsZSB0byB0aHJvdyBhIHByb3BlciBleGNlcHRpb24gdGhlcmUg
dG9vLgorICAgICAgICBVc2luZyAudmFsdWUoKSBhbmQgbm90IGEgc2ltcGxlIGRlcmVmZXJlbmNl
IGlzIGltcG9ydGFudCBhcyB0aGUgbGF0dGVyIGlzIHVuZGVmaW5lZCBiZWhhdmlvdXIgaWYgdGhl
cmUgaXMgbm8gJ3ZhbHVlJy4KKworICAgICAgICBUd28gb3RoZXIgbWlub3IgY2hhbmdlczoKKyAg
ICAgICAgLSBJIHJlbW92ZWQgQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLntjcHAsIGh9IGFzIGl0
IHdhcyBuZWFybHkgZW1wdHksIGFuZCBvbmx5IHVzZWQgaW4gb25lIHBsYWNlLiBUaGF0IHBsYWNl
IG5vdyBpbmNsdWRlcyBCdWlsdGluRXhlY3V0YWJsZXMuaCBkaXJlY3RseSBpbnN0ZWFkLgorICAg
ICAgICAtIEkgbW92ZWQgY29kZSBmcm9tIFBhcnNlckVycm9yLmggaW50byBhIG5ld2x5IGNyZWF0
ZWQgUGFyc2VyRXJyb3IuY3BwLCBhcyBJIHNlZSBubyBuZWVkIHRvIGlubGluZSBmdW5jdGlvbnMg
dGhhdCBhcmUgb25seSB1c2VkIHdoZW4gZW5jb3VudGVyaW5nIGEgcGFyc2VyIGVycm9yLCBhbmQg
UGFyc2VyRXJyb3IuaCBpcyBub3cgaW5jbHVkZWQgaW4gcXVpdGUgYSBmZXcgcGxhY2VzLgorCisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5w
eToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJHZW5lcmF0b3IuZ2VuZXJhdGVfZm9y
d2FyZF9kZWNsYXJhdGlvbnMpOgorICAgICAgICAoUGFyc2VyRXJyb3IpOgorICAgICAgICAoZ2Vu
ZXJhdGVfc2VjdGlvbl9mb3Jfb2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKGdlbmVyYXRlX2V4
dGVybnNfZm9yX29iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChnZW5lcmF0ZV9tYWNyb3NfZm9y
X29iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX3Rh
YmxlX21hY3JvKTogRGVsZXRlZC4KKyAgICAgICAgKGdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVf
bmFtZV9tYWNybyk6IERlbGV0ZWQuCisgICAgICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9nbG9i
YWxfcHJpdmF0ZV9jb2RlX25hbWVfbWFjcm8pOiBEZWxldGVkLgorICAgICAgICAqIFNjcmlwdHMv
YnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5OgorICAgICAgICAo
Z2VuZXJhdGVfc2Vjb25kYXJ5X2hlYWRlcl9pbmNsdWRlcyk6CisgICAgICAgICogU2NyaXB0cy9i
dWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHk6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwOgorICAgICAgICAoSlND
OjpCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUpOgorICAg
ICAgICAoSlNDOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkJ1aWx0
aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZU9yQ3Jhc2gpOgorICAgICAgICAoSlNDOjpC
dWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ1aWx0aW5z
L0J1aWx0aW5FeGVjdXRhYmxlcy5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJFcnJvci5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpQYXJzZXJFcnJvcjo6dG9FcnJvck9iamVjdCk6CisgICAgICAgIChKU0M6OlBh
cnNlckVycm9yOjp0aHJvd1N0YWNrT3ZlcmZsb3dPck91dE9mTWVtb3J5KToKKyAgICAgICAgKFdU
Rjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckVycm9yLmg6CisgICAg
ICAgIChKU0M6OlBhcnNlckVycm9yOjp0b0Vycm9yT2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6cHJpbnRJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Bc3luY0l0
ZXJhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXN5bmNJdGVyYXRvclByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvblByb3RvdHlwZTo6YWRkRnVuY3Rpb25Qcm9wZXJ0
aWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duU3RhdGljUHJvcGVydHlTbG90KToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlaWZ5QWxsU3RhdGljUHJvcGVydGllcyk6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duTm9u
SW5kZXhQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldFByb3BlcnR5U2xvdCk6CisgICAg
ICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmdldE5vbkluZGV4UHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9Mb29rdXAuY3BwOgorICAg
ICAgICAoSlNDOjpyZWlmeVN0YXRpY0FjY2Vzc29yKToKKyAgICAgICAgKEpTQzo6c2V0VXBTdGF0
aWNGdW5jdGlvblNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChK
U0M6OmdldFN0YXRpY1Byb3BlcnR5U2xvdEZyb21UYWJsZSk6CisgICAgICAgIChKU0M6OnJlaWZ5
U3RhdGljUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvTWFwUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6TWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9TZXRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTZXRQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKEpT
Qzo6ZnVuY3Rpb25DcmVhdGVCdWlsdGluKToKKwogMjAxOC0wNS0wMyAgRG9taW5payBJbmZ1ZWhy
ICA8ZGluZnVlaHJAaWdhbGlhLmNvbT4KIAogICAgICAgICBEaXNhYmxlIHVzYWdlIG9mIGZ1c2Vk
IG11bHRpcGx5LWFkZCBpbnN0cnVjdGlvbnMgZm9yIEpTQyB3aXRoIGNvbXBpbGVyIGZsYWcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA1YzVmM2UyOTg3M2U4ZWQ4Zjg1MTNjNTJkYzVjYjY0ZWY3OTlhOWZmLi44ZDdm
NThkZjliMzFhN2MzMzg4MDEyNWEwODYzMjcyODYxMTk4MzczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjYgQEAKKzIwMTgtMDUtMDMgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNv
bT4KKworICAgICAgICBBIHN0YWNrIG92ZXJmbG93IGluIHRoZSBwYXJzaW5nIG9mIGEgYnVpbHRp
biAoY2FsbGVkIGJ5IGNyZWF0ZUV4ZWN1dGFibGUpIGNhdXNlIGEgY3Jhc2ggaW5zdGVhZCBvZiBh
IGNhdGNoYWJsZSBqcyBleGNlcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4NDA3NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzcxNjU4OTc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VpdGggTWlsbGVyIGFuZCBKRiBCYXN0aWVuLgorCisg
ICAgICAgIEkgaGFkIHRvIHNsaWdodGx5IGNoYW5nZSB0aGUgdHlwZSBvZiBzb21lIGJpbmRpbmdz
IGJldHdlZW4gSlNDIGFuZCBXZWJDb3JlLiBObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCBv
biB0aGUgV2ViQ29yZSBzaWRlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0
cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNCdWlsdGlu
UmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0aWFsaXpl
RXhlY3V0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbURl
ZmF1bHRDb250cm9sbGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU0J1aWx0aW5SZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVy
UHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXJQcml2YXRlQ29uc3RydWN0b3I6
OmluaXRpYWxpemVFeGVjdXRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQnVpbHRpblJlYWRh
YmxlU3RyZWFtQllPQlJlcXVlc3RQcml2YXRlQ29uc3RydWN0b3I6OmluaXRpYWxpemVFeGVjdXRh
YmxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAg
ICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFs
aXplRXhlY3V0YWJsZSk6CisKIDIwMTgtMDUtMDMgIE1pZ3VlbCBHb21leiAgPG1hZ29tZXpAaWdh
bGlhLmNvbT4KIAogICAgICAgICBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIgb2JqZWN0IHVz
ZWQgYWZ0ZXIgZnJlZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGFiNmIxMjU2
NTQ1OTRkNzc4ZDY2YWE4MzdmOGFjODgyNmVjZGIxZC4uNWU0OGZlODI1MmMxNTkwZTVjOTRmZWJj
M2FjZTM4N2I5MTBhZTU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2NzMs
NyArMTY3Myw2IEBACiAJCURDRjNENTZEMUNEMjk0NzYwMDNENUM2NSAvKiBMYXp5UHJvcGVydHlJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBE
Q0YzRDU2ODFDRDI5NDY4MDAzRDVDNjUgLyogTGF6eVByb3BlcnR5SW5saW5lcy5oICovOyB9Owog
CQlEQ0ZERkJEOTFEMUY1RDlCMDBGRTNENzIgLyogQjNCb3R0b21Qcm92aWRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRENGREZCRDcxRDFGNUQ5ODAw
RkUzRDcyIC8qIEIzQm90dG9tUHJvdmlkZXIuaCAqLzsgfTsKIAkJRENGREZCREExRDFGNUQ5RTAw
RkUzRDcyIC8qIEIzVHlwZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRENGREZCRDgxRDFGNUQ5ODAwRkUzRDcyIC8qIEIzVHlwZU1hcC5oICovOyB9
OwotCQlERTI2RTkwMzFDQjVERDA1MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTI2RTkw
MjFDQjVERDA1MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmggKi87IH07CiAJ
CURFQTdFMjQ1MUJCQzY3N0YwMEQ3ODQ0MCAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzkxN0U3QzFC
NzkxMTA2MDAwRUJEMzMgLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxMjRBOEY3MEU1NTU3NzUw
MDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3Ry
aW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTMxNjE4MTMxRUM1RkUxNzAwMDZBMjE4IC8qIERPTUFubm90YXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMTYxODEwMUVDNUZFMDgwMDA2QTIx
OCAvKiBET01Bbm5vdGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTMxNTksNiArMzE1OCw3IEBACiAJCTFDQUE4QjRBMEQzMkMzOUEwMDQx
QkNGRiAvKiBKYXZhU2NyaXB0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEph
dmFTY3JpcHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBQThCNEIwRDMyQzM5
QTAwNDFCQ0ZGIC8qIEphdmFTY3JpcHRDb3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEphdmFTY3JpcHRDb3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIw
RUNCMTVFRkM1MjQ2MjRCQzJGMDJENSAvKiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZU5hbWVzcGFjZUFjY2Vz
c0Nhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyMjBDNjBDNjIwNkNFQUJE
MDBGQzQ2MzcgLyogUGFyc2VyRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFyc2VyRXJy
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjAwQjVBNDE1MkJBQUE3MDA5
MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNTdHJpbmdKb2luZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyNjAwQjVBNTE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdKb2luZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMjYyRDg1QjQxQzBENjUwRjAwNkFDQjYxIC8qIEFpckZpeFBhcnRpYWxS
ZWdpc3RlclN0YWxscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBB
aXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwOyBwYXRoID0gYjMvYWlyL0FpckZpeFBhcnRp
YWxSZWdpc3RlclN0YWxscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTE2
LDggKzQ1MTYsNiBAQAogCQlEQ0YzRDU2ODFDRDI5NDY4MDAzRDVDNjUgLyogTGF6eVByb3BlcnR5
SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXp5UHJvcGVydHlJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDRkRGQkQ3MUQxRjVEOTgw
MEZFM0Q3MiAvKiBCM0JvdHRvbVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEIzQm90dG9tUHJvdmlkZXIuaDsgcGF0aCA9IGIzL0IzQm90dG9tUHJvdmlkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRENGREZCRDgxRDFGNUQ5ODAwRkUzRDcyIC8q
IEIzVHlwZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1R5cGVNYXAu
aDsgcGF0aCA9IGIzL0IzVHlwZU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
RTI2RTkwMjFDQjVERDA1MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlERTI2RTkwNjFDQjVERDk2MDBEMkJFODIg
LyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCURFNUEwOUZGMUJBM0FDM0UwMDNENDQyNCAvKiBJbnRyaW5zaWNFbWl0
dGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludHJpbnNpY0Vt
aXR0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTI0QThGNTBFNTU1Nzc1
MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gT3BhcXVlSlNTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEy
NEE4RjYwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9wYXF1ZUpTU3RyaW5nLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTYzNjUsNiArNjM2Myw3IEBACiAJCQkJOTNGMEIzQUEwOUJCNERD
MDAwNjhGQ0UzIC8qIFBhcnNlci5oICovLAogCQkJCTkzMDUyQzMyMEZCNzkyMTkwMDQ4RkRDMyAv
KiBQYXJzZXJBcmVuYS5jcHAgKi8sCiAJCQkJOTMwNTJDMzMwRkI3OTIxOTAwNDhGREMzIC8qIFBh
cnNlckFyZW5hLmggKi8sCisJCQkJMjIwQzYwQzYyMDZDRUFCRDAwRkM0NjM3IC8qIFBhcnNlckVy
cm9yLmNwcCAqLywKIAkJCQkwRkNDQUU0MzE2RDBDRjZFMDBEMEM2NUIgLyogUGFyc2VyRXJyb3Iu
aCAqLywKIAkJCQk5QjQ5NTRFODFBNjY0MERCMDAyODE1QTYgLyogUGFyc2VyRnVuY3Rpb25JbmZv
LmggKi8sCiAJCQkJQTc3RjE4MjQxNjQxOTI1NDAwNjQwQTQ3IC8qIFBhcnNlck1vZGVzLmggKi8s
CkBAIC02NjcwLDYgKzY2NjksNyBAQAogCQkJCTg2NUEzMEYwMTM1MDA3RTEwMENEQjQ5RSAvKiBK
U0NKU1ZhbHVlSW5saW5lcy5oICovLAogCQkJCUZFMkIwQjY4MUZEMEQyOTcwMDc1REE1RiAvKiBK
U0NQb2lzb24uY3BwICovLAogCQkJCUZFMkIwQjcwMUZEOEM0NjMwMDc1REE1RiAvKiBKU0NQb2lz
b24uaCAqLywKKwkJCQlGRTc0OTdFNTIwOTAwMUIwMDAwMzU2NUIgLyogSlNDUHRyVGFnLmggKi8s
CiAJCQkJNzJBQUY3Q0IxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVu
Y3Rpb24uY3BwICovLAogCQkJCTcyQUFGN0NDMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdl
dHRlclNldHRlckZ1bmN0aW9uLmggKi8sCiAJCQkJMEYyQjY2QkQxN0I2QjVBQjAwQTdBRTNGIC8q
IEpTRGF0YVZpZXcuY3BwICovLApAQCAtNjc1NSw3ICs2NzU1LDYgQEAKIAkJCQkyQTA1QUJENDE5
NjFERjI0MDAzNDE3NTAgLyogSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmggKi8sCiAJCQkJODYy
NTUzQ0UxNjEzNkFBNTAwOUYxN0QwIC8qIEpTUHJveHkuY3BwICovLAogCQkJCTg2MjU1M0NGMTYx
MzZBQTUwMDlGMTdEMCAvKiBKU1Byb3h5LmggKi8sCi0JCQkJRkU3NDk3RTUyMDkwMDFCMDAwMDM1
NjVCIC8qIEpTQ1B0clRhZy5oICovLAogCQkJCTUzNDYzODcyMUU3MEQwMTUwMEYxMkFDMSAvKiBK
U1J1bkxvb3BUaW1lci5jcHAgKi8sCiAJCQkJNTM0NjM4NzAxRTcwQ0YzRDAwRjEyQUMxIC8qIEpT
UnVuTG9vcFRpbWVyLmggKi8sCiAJCQkJMTQ4NzRBRTExNUVCREU0QTAwMkUzNTg3IC8qIEpTU2Nv
cGUuY3BwICovLApAQCAtNzkyMyw4ICs3OTIyLDYgQEAKIAkJCQk1QjgyNDMwNDFEQjdBQTQ5MDBF
QTYzODQgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcyAqLywKIAkJCQk4QkMwNjQ4MjFFMTgw
QjRBMDBCMkI4Q0EgLyogQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuanMgKi8sCiAJCQkJOEJDMDY0
OTUxRTFEODM4QjAwQjJCOENBIC8qIEFzeW5jSXRlcmF0b3JQcm90b3R5cGUuanMgKi8sCi0JCQkJ
REUyNkU5MDYxQ0I1REQ5NjAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5jcHAg
Ki8sCi0JCQkJREUyNkU5MDIxQ0I1REQwNTAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3Jl
YXRvci5oICovLAogCQkJCUE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0
YWJsZXMuY3BwICovLAogCQkJCUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhl
Y3V0YWJsZXMuaCAqLywKIAkJCQlFMzgwRDY2QjFGMTkyNDlEMDBBNTkwOTUgLyogQnVpbHRpbk5h
bWVzLmNwcCAqLywKQEAgLTgzNTYsNyArODM1Myw2IEBACiAJCQkJOUI0Njk0MzkxRjk3NDM5RTAw
Q0NCM0Y5IC8qIEJvb2xlYW5Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NkI3MzE5
MUJEQTA2ODAwMDMzMUI4NCAvKiBCb29sZWFuUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkVBMDg2MjAxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJz
ICovLAotCQkJCURFMjZFOTAzMUNCNUREMDUwMEQyQkU4MiAvKiBCdWlsdGluRXhlY3V0YWJsZUNy
ZWF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2QzM5QiAvKiBC
dWlsdGluRXhlY3V0YWJsZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NUVFOUIyMThBQUI3RTIw
MEFBRDA0MyAvKiBCdWlsdGluTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5REEwMEE2MUJE
NTk5MzEwMEY0NTc1QyAvKiBidWlsdGlucy5weSBpbiBIZWFkZXJzICovLApAQCAtOTAwMCw2ICs4
OTk2LDcgQEAKIAkJCQlBNUQyRTY2NTE5NUUxNzQwMDBBNTE4RTcgLyogSlNDb250ZXh0UmVmSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0OENEMUQ4MTA4Q0Y5MDIwMDgxNjNDNiAvKiBK
U0NvbnRleHRSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTJCMEI3MzFGRDlFRjcw
MDA3NURBNUYgLyogSlNDUG9pc29uLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTc0OTdFNjIwOTAw
MUIxMDAwMzU2NUIgLyogSlNDUHRyVGFnLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzIwMjhCODE3
OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3MkFBRjdDRTFEMEQzMUIzMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RUMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0
YVZpZXcuaCBpbiBIZWFkZXJzICovLApAQCAtOTA3NSw3ICs5MDcyLDYgQEAKIAkJCQk3QzAwOENE
QjE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdDMTg0RTFGMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk5NkI3MzFGMUJEQTA4RUYwMDMzMUI4NCAvKiBKU1Byb21pc2VQcm90
b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKLQkJCQlGRTc0OTdFNjIwOTAwMUIxMDAwMzU2NUIg
LyogSlNDUHRyVGFnLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQTA1QUJENjE5NjFERjI0MDAzNDE3
NTAgLyogSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjI1
NTNEMjE2MTM2RTFBMDA5RjE3RDAgLyogSlNQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1
MkMzODAxQUREQjhGRTAwMTM5NzI2IC8qIEpTUmVtb3RlSW5zcGVjdG9yLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1
aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weQpp
bmRleCBjZGUzNTdjZDQzOWNlYWY0NDY0MjhlNjgxODg0NzgwNzNjMDNjNDlkLi43MjE0Y2RhYTU5
NDNiOGJjY2FjMzNlMmMwN2Y5ZmYzZWMxMjc3ZDk0IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFk
ZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRp
bnNfZ2VuZXJhdGVfY29tYmluZWRfaGVhZGVyLnB5CkBAIC02NiwxMiArNjYsMTcgQEAgY2xhc3Mg
QnVpbHRpbnNDb21iaW5lZEhlYWRlckdlbmVyYXRvcihCdWlsdGluc0dlbmVyYXRvcik6CiAgICAg
ICAgIHJldHVybiAiXG5cbiIuam9pbihzZWN0aW9ucykKIAogICAgIGRlZiBnZW5lcmF0ZV9mb3J3
YXJkX2RlY2xhcmF0aW9ucyhzZWxmKToKLSAgICAgICAgcmV0dXJuICIiIm5hbWVzcGFjZSBKU0Mg
eworICAgICAgICByZXR1cm4gIiIiCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisKK25hbWVz
cGFjZSBKU0MgewogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgVk07CitjbGFzcyBQ
YXJzZXJFcnJvcjsKIAogZW51bSBjbGFzcyBDb25zdHJ1Y3RBYmlsaXR5IDogdW5zaWduZWQ7Ci19
IiIiCit9CisiIiIKIAogICAgIGRlZiBnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3Qoc2VsZiwg
b2JqZWN0KToKICAgICAgICAgbGluZXMgPSBbXQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVy
LnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2Vu
ZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5CmluZGV4IDU4YzhmMmFjOGE2NDE1YTI5MWNmZjg4OGNm
MWY2ODBjMWQ2NjA0N2QuLjE4ODk2MjU5YjJmM2VhNmE5NjA0YTljNDhlMGUxOTVkMDY4Y2JmMmEg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0
aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkK
QEAgLTkzLDYgKzkzLDEwIEBAIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKICAgICAgICAgICAg
ICksCiAKICAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFT
Y3JpcHRDb3JlIiwgInBhcnNlci9QYXJzZXJFcnJvci5oIiksCisgICAgICAgICAgICApLAorCisg
ICAgICAgICAgICAoWyJXZWJDb3JlIl0sCiAgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29y
ZSIsICJidWlsdGlucy9CdWlsdGluVXRpbHMuaCIpLAogICAgICAgICAgICAgKSwKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVt
cGxhdGVzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRp
bnNfdGVtcGxhdGVzLnB5CmluZGV4IDkwN2E2ZDcxN2M5MTBjYjA3Mjk5NTA5YzYxZGY4NDZhOWM3
MDFlZmMuLmVjNmI4MzViYzVmYTkzMjRlOThmY2ViNGE0MDAxM2U1ZWE0ZDhhZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBs
YXRlcy5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWls
dGluc190ZW1wbGF0ZXMucHkKQEAgLTY4LDE0ICs2OCwxNCBAQCBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKICAgICBDb21iaW5lZEhlYWRlclN0YXRpY01hY3JvcyA9ICgKICAgICAi
IiIjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFt
ZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCi0gICAgSlNDOjpGdW5jdGlvbkV4
ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworICAgIEV4cGVjdGVkPEpT
Qzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVy
YXRvcihKU0M6OlZNJik7CiAKICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERF
Q0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRP
UiIiIikKIAogICAgIFNlcGFyYXRlSGVhZGVyU3RhdGljTWFjcm9zID0gKAogICAgICIiIiNkZWZp
bmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVy
cmlkZGVuTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKLSAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJs
ZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisgICAgRXhwZWN0ZWQ8SlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpT
Qzo6Vk0mKTsKIAogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElO
X0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUNMQVJFX0JVSUxUSU5f
R0VORVJBVE9SIiIiKQpAQCAtODMsOSArODMsMTIgQEAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8k
e29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKICAg
ICBDb21iaW5lZEpTQ0ltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zID0gKAogICAgICIiIgogI2Rl
ZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3Zl
cnJpZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSog
Y29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKK0V4cGVjdGVkPEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6
OlZNJiB2bSkgXFwKIHtcXAotICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29k
ZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNv
ZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7
IFwKKyAgICBpZiAoYXV0byBleHBlY3RlZFVubGlua2VkID0gdm0uYnVpbHRpbkV4ZWN1dGFibGVz
KCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCkpXFwKKyAgICAgICAgcmV0dXJuIGV4cGVjdGVkVW5s
aW5rZWQudmFsdWUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1l
IyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7XFwKKyAg
ICBlbHNlXFwKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV4cGVjdGVkVW5saW5rZWQu
ZXJyb3IoKSk7XFwKIH0KICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklO
RV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKQEAg
LTk0LDkgKzk3LDEyIEBAICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklO
RV9CVUlMVElOX0dFTkVSQVRPUikKICAgICBTZXBhcmF0ZUpTQ0ltcGxlbWVudGF0aW9uU3RhdGlj
TWFjcm9zID0gKAogICAgICIiIgogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29k
ZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCi1K
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkg
XFwKK0V4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4g
Y29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKIHtcXAotICAgIHJldHVybiB2bS5i
dWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0u
YnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBz
XyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFwKKyAgICBpZiAoYXV0byBleHBlY3RlZFVubGlua2Vk
ID0gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCkpXFwKKyAg
ICAgICAgcmV0dXJuIGV4cGVjdGVkVW5saW5rZWQudmFsdWUoKS0+bGluayh2bSwgdm0uYnVpbHRp
bkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29k
ZU5hbWUjI0ludHJpbnNpYyk7XFwKKyAgICBlbHNlXFwKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKGV4cGVjdGVkVW5saW5rZWQuZXJyb3IoKSk7XFwKIH0KICR7bWFjcm9QcmVmaXh9X0ZP
UkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRP
UikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKQEAgLTEwNSwxMCArMTExLDEwIEBA
ICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKERFRklO
RV9CVUlMVElOX0dFTkVSQVRPUikKICAgICBDb21iaW5lZFdlYkNvcmVJbXBsZW1lbnRhdGlvblN0
YXRpY01hY3JvcyA9ICgKICAgICAgICAgIiIiCiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVS
QVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJndW1lbnRDb3Vu
dCkgXFwKLUpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6
Vk0mIHZtKSBcXAorRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNl
ckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAoge1xcCiAgICAgSlNW
TUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZt
LmNsaWVudERhdGEpOyBcXAotICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25z
KCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5r
KHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRp
bnMoKS5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRy
aW5zaWMpOyBcXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtv
YmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLnZhbHVlKCktPmxp
bmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWls
dGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0lu
dHJpbnNpYyk7IFxcCiB9CiAke21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJ
TkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCkBA
IC0xMTcsMTAgKzEyMywxMCBAQCAke21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShE
RUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAgICAgU2VwYXJhdGVXZWJDb3JlSW1wbGVtZW50YXRp
b25TdGF0aWNNYWNyb3MgPSAoCiAgICAgICAgICIiIgogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9H
RU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50
Q291bnQpIFxcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihK
U0M6OlZNJiB2bSkgXFwKK0V4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQ
YXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKIHtcXAogICAg
IEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
Pih2bS5jbGllbnREYXRhKTsgXFwKLSAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0
aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+
bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1
aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMj
SW50cmluc2ljKTsgXFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygp
LiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS52YWx1ZSgp
LT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9
QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1l
IyNJbnRyaW5zaWMpOyBcXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3Jv
fV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9C
VUlMVElOX0dFTkVSQVRPUgpAQCAtMTM5LDcgKzE0NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICNk
ZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVy
cmlkZGVuTmFtZSwgbGVuZ3RoKSBcXAotICAgIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXFwKK0V4cGVjdGVkPEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBuYW1lIyNFeGVjdXRhYmxlKCk7IFxcCiAg
ICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBt
XyMjbmFtZSMjU291cmNlOyB9CiAgICAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1h
Y3JvfV9CVUlMVElOX0NPREUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCiAjdW5kZWYgRVhQ
T1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMKQEAgLTE2Miw3ICsxNjgsNyBAQCBwcml2YXRlOgogfTsK
IAogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUs
IG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpIFxcCi1pbmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogJHtvYmplY3ROYW1lfUJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJs
ZSgpIFxcCitpbmxpbmUgRXhwZWN0ZWQ8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSos
IEpTQzo6UGFyc2VyRXJyb3I+ICR7b2JqZWN0TmFtZX1CdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4
ZWN1dGFibGUoKSBcXAoge1xcCiAgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSkge1xcCiAg
ICAgICAgIEpTQzo6SWRlbnRpZmllciBleGVjdXRhYmxlTmFtZSA9IGZ1bmN0aW9uTmFtZSMjUHVi
bGljTmFtZSgpO1xcCkBAIC0yMDIsNyArMjA4LDcgQEAgcHVibGljOgogaW5saW5lIHZvaWQgJHtv
YmplY3ROYW1lfUJ1aWx0aW5GdW5jdGlvbnM6OmluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQogewogI2RlZmluZSBFWFBPUlRfRlVOQ1RJT04oY29kZU5hbWUsIGZ1bmN0aW9u
TmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGxlbmd0aClcXAotICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1
bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZSht
X3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7CisgICAgbV8j
I2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNG
dW5jdGlvbjo6Y3JlYXRlKG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0b3IobV92bSkudmFsdWUoKSwg
Jmdsb2JhbE9iamVjdCkpOwogICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNy
b31fQlVJTFRJTl9DT0RFKEVYUE9SVF9GVU5DVElPTikKICN1bmRlZiBFWFBPUlRfRlVOQ1RJT04K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1Db21iaW5lZC5qcy1y
ZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtQ29tYmluZWQuanMtcmVzdWx0Cmlu
ZGV4IDA4NDI5ZjRlNTI2MWM3MWIwMzU5YjcwODBjNDlmNzkzMzVhODQyMzEuLmUwNDNkMTBiYWM0
ZWMxYmEwM2UzZTM3YjMyMmUxN2RmMGQ4OWRhZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1
aWx0aW4uUHJvbWlzZS1Db21iaW5lZC5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRp
bi5Qcm9taXNlLUNvbWJpbmVkLmpzLXJlc3VsdApAQCAtMzEsMTMgKzMxLDE4IEBACiAKICNwcmFn
bWEgb25jZQogCisKKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KKwogbmFtZXNwYWNlIEpTQyB7
CiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBWTTsKK2NsYXNzIFBhcnNlckVycm9y
OwogCiBlbnVtIGNsYXNzIENvbnN0cnVjdEFiaWxpdHkgOiB1bnNpZ25lZDsKIH0KIAorCiBuYW1l
c3BhY2UgSlNDIHsKIAogLyogQnVpbHRpbi5Qcm9taXNlICovCkBAIC02Myw3ICs2OCw3IEBAIGV4
dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQ
cm9taXNlQ29kZUNvbnN0cnVjdEFiCiAjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJ
T05fUFJJVkFURV9HTE9CQUxfTkFNRShtYWNybykgXAogCiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJ
Tl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3Vt
ZW50Q291bnQpIFwKLSAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVy
YXRvcihKU0M6OlZNJik7CisgICAgRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBK
U0M6OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKIAogSlNDX0ZP
UkVBQ0hfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVD
TEFSRV9CVUlMVElOX0dFTkVSQVRPUgpAQCAtMTU3LDkgKzE2MiwxMyBAQCBjb25zdCBjaGFyKiBz
X2J1aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2VDb2RlID0KIAogCiAjZGVmaW5lIERFRklORV9C
VUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwg
YXJndW1lbnRDb3VudCkgXAotSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5l
cmF0b3IoSlNDOjpWTSYgdm0pIFwKK0V4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwg
SlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAoge1wK
LSAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxl
KCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCks
IHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyB9CisgICAgaWYgKGF1dG8g
ZXhwZWN0ZWRVbmxpbmtlZCA9IHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhl
Y3V0YWJsZSgpKVwKKyAgICAgICAgcmV0dXJuIGV4cGVjdGVkVW5saW5rZWQudmFsdWUoKS0+bGlu
ayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpu
dWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7XAorICAgIGVsc2VcCisgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChleHBlY3RlZFVubGlua2VkLmVycm9yKCkpO1wKK30KIEpTQ19G
T1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVG
SU5FX0JVSUxUSU5fR0VORVJBVE9SCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4u
UHJvbWlzZS1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2Ut
U2VwYXJhdGUuanMtcmVzdWx0CmluZGV4IDRkN2NkMjJkYmZkMGNiNWE5NmZjNzRhMGFmNjAyMGRk
Yzc5MDVjMmYuLmRlODEzYWExMDBkNjc3MjM5MmVhOGFkNzgzOTlhYzdjMTAyMWUwZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qcy1yZXN1bHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQv
SmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtNjMs
NyArNjMsNyBAQCBleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblBy
b21pc2VGdWxmaWxsUHJvbWlzZUNvZGVDb25zdHJ1Y3RBYgogICAgIG1hY3JvKHJlamVjdFByb21p
c2UpIFwKIAogI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5j
dGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcCi0gICAgSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworICAgIEV4cGVj
dGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUj
I0dlbmVyYXRvcihKU0M6OlZNJik7CiAKIEpTQ19GT1JFQUNIX0JVSUxUSU4uUFJPTUlTRV9CVUlM
VElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUNMQVJFX0JVSUxU
SU5fR0VORVJBVE9SCkBAIC0xNTYsOSArMTU2LDEzIEBAIGNvbnN0IGNoYXIqIHNfYnVpbHRpblBy
b21pc2VGdWxmaWxsUHJvbWlzZUNvZGUgPQogCiAKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VO
RVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENv
dW50KSBcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6
OlZNJiB2bSkgXAorRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNl
ckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCiB7XAotICAgIHJldHVy
biB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2
bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxs
b3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IH0KKyAgICBpZiAoYXV0byBleHBlY3RlZFVu
bGlua2VkID0gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCkp
XAorICAgICAgICByZXR1cm4gZXhwZWN0ZWRVbmxpbmtlZC52YWx1ZSgpLT5saW5rKHZtLCB2bS5i
dWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNf
IyNjb2RlTmFtZSMjSW50cmluc2ljKTtcCisgICAgZWxzZVwKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKGV4cGVjdGVkVW5saW5rZWQuZXJyb3IoKSk7XAorfQogSlNDX0ZPUkVBQ0hfQlVJ
TFRJTi5QUk9NSVNFX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5k
ZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1
aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4u
cHJvdG90eXBlLUNvbWJpbmVkLmpzLXJlc3VsdAppbmRleCA3Yjc3NjAyMDUzN2QwNmYwZDc3Y2Qw
NmJlOGQyYjZhN2JhY2ZkYTY4Li41Zjc0MDg0MTUxYTEzN2FhZjg5Mzg1MTNlZmU0YTFkNTg2NzA3
OWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWls
dGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5q
cy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRp
bnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMt
cmVzdWx0CkBAIC0zMSwxMyArMzEsMTggQEAKIAogI3ByYWdtYSBvbmNlCiAKKworI2luY2x1ZGUg
PHd0Zi9FeHBlY3RlZC5oPgorCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0
YWJsZTsKIGNsYXNzIFZNOworY2xhc3MgUGFyc2VyRXJyb3I7CiAKIGVudW0gY2xhc3MgQ29uc3Ry
dWN0QWJpbGl0eSA6IHVuc2lnbmVkOwogfQogCisKIG5hbWVzcGFjZSBKU0MgewogCiAvKiBCdWls
dGluLnByb3RvdHlwZSAqLwpAQCAtNzUsNyArODAsNyBAQCBleHRlcm4gY29uc3QgSlNDOjpDb25z
dHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb3RvdHlwZVRlc3RDb2RlQ29uc3RydWN0QWJpbGl0eTsK
ICNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9QUklWQVRFX0dMT0JBTF9OQU1F
KG1hY3JvKSBcCiAKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwg
ZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJndW1lbnRDb3VudCkgXAotICAgIEpTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKyAgICBF
eHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVO
YW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOwogCiBKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVD
TEFSRV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9S
CkBAIC0yNzksOSArMjg0LDEzIEBAIGNvbnN0IGNoYXIqIHNfYnVpbHRpblByb3RvdHlwZVRlc3RD
b2RlID0KIAogCiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVu
Y3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJndW1lbnRDb3VudCkgXAotSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKK0V4cGVjdGVk
PEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dl
bmVyYXRvcihKU0M6OlZNJiB2bSkgXAoge1wKLSAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFi
bGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRh
YmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJ
bnRyaW5zaWMpOyB9CisgICAgaWYgKGF1dG8gZXhwZWN0ZWRVbmxpbmtlZCA9IHZtLmJ1aWx0aW5F
eGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpKVwKKyAgICAgICAgcmV0dXJuIGV4
cGVjdGVkVW5saW5rZWQudmFsdWUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCkt
PmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNp
Yyk7XAorICAgIGVsc2VcCisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChleHBlY3RlZFVu
bGlua2VkLmVycm9yKCkpO1wKK30KIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJ
TFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLVNlcGFyYXRlLmpzLXJlc3VsdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0ph
dmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLVNlcGFyYXRlLmpzLXJlc3VsdAppbmRleCBi
MmI3MmNkYmI4OWFmMDQxZDQ5NzJkMWY5YjhkMTcwYTk1ZjZiNDFiLi5hMjM0YTNkNzM4ZjQ3ZGYz
ODA4ZTAxNTgzOTJhY2FmMGQ2NWE3YTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGlu
LnByb3RvdHlwZS1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5w
cm90b3R5cGUtU2VwYXJhdGUuanMtcmVzdWx0CkBAIC03Nyw3ICs3Nyw3IEBAIGV4dGVybiBjb25z
dCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvdG90eXBlVGVzdENvZGVDb25zdHJ1
Y3RBYmlsaXR5OwogICAgIG1hY3JvKHRlc3QpIFwKIAogI2RlZmluZSBERUNMQVJFX0JVSUxUSU5f
R0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVu
dENvdW50KSBcCi0gICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0
b3IoSlNDOjpWTSYpOworICAgIEV4cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlND
OjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CiAKIEpTQ19GT1JF
QUNIX0JVSUxUSU4uUFJPVE9UWVBFX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJB
VE9SKQogI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKQEAgLTI4MCw5ICsyODAsMTMg
QEAgY29uc3QgY2hhciogc19idWlsdGluUHJvdG90eXBlVGVzdENvZGUgPQogCiAKICNkZWZpbmUg
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRk
ZW5OYW1lLCBhcmd1bWVudENvdW50KSBcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5h
bWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAorRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1
dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZt
KSBcCiB7XAotICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4
ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNT
b3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IH0KKyAgICBp
ZiAoYXV0byBleHBlY3RlZFVubGlua2VkID0gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVO
YW1lIyNFeGVjdXRhYmxlKCkpXAorICAgICAgICByZXR1cm4gZXhwZWN0ZWRVbmxpbmtlZC52YWx1
ZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgp
LCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTtcCisgICAgZWxzZVwKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV4cGVjdGVkVW5saW5rZWQuZXJyb3IoKSk7XAor
fQogSlNDX0ZPUkVBQ0hfQlVJTFRJTi5QUk9UT1RZUEVfQlVJTFRJTl9DT0RFKERFRklORV9CVUlM
VElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0
ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzLXJlc3VsdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0ph
dmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcy1yZXN1bHQKaW5kZXgg
OTIxNDI2ZGZiY2JmZDRlYjIwNDY5NjIxM2I1MTAwYjY1NjY4ODUwMC4uNTY2OTE3MThiYjQ2ZmY0
M2U5OWFjMjI4MTNlZWEwMmYwMGY5OWQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRp
bkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGlu
Q29uc3RydWN0b3ItQ29tYmluZWQuanMtcmVzdWx0CkBAIC0zMCwxMyArMzAsMTggQEAKIAogI3By
YWdtYSBvbmNlCiAKKworI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorCiBuYW1lc3BhY2UgSlND
IHsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIFZNOworY2xhc3MgUGFyc2VyRXJy
b3I7CiAKIGVudW0gY2xhc3MgQ29uc3RydWN0QWJpbGl0eSA6IHVuc2lnbmVkOwogfQogCisKIG5h
bWVzcGFjZSBKU0MgewogCiAvKiBCdWlsdGluQ29uc3RydWN0b3IgKi8KQEAgLTYyLDcgKzY3LDcg
QEAgZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Db25zdHJ1Y3Rv
ckZyb21Db2RlQ29uc3RydWN0QWJpbGl0eTsKICNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9G
VU5DVElPTl9QUklWQVRFX0dMT0JBTF9OQU1FKG1hY3JvKSBcCiAKICNkZWZpbmUgREVDTEFSRV9C
VUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwg
YXJndW1lbnRDb3VudCkgXAotICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMj
R2VuZXJhdG9yKEpTQzo6Vk0mKTsKKyAgICBFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJs
ZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOwogCiBK
U0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRl
ZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCkBAIC0yMTEsOSArMjE2LDEzIEBAIGNvbnN0IGNo
YXIqIHNfYnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNvZGUgPQogCiAKICNkZWZpbmUgREVGSU5FX0JV
SUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBh
cmd1bWVudENvdW50KSBcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVy
YXRvcihKU0M6OlZNJiB2bSkgXAorRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBK
U0M6OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCiB7XAot
ICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUo
KS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwg
c3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IH0KKyAgICBpZiAoYXV0byBl
eHBlY3RlZFVubGlua2VkID0gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVj
dXRhYmxlKCkpXAorICAgICAgICByZXR1cm4gZXhwZWN0ZWRVbmxpbmtlZC52YWx1ZSgpLT5saW5r
KHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51
bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTtcCisgICAgZWxzZVwKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKGV4cGVjdGVkVW5saW5rZWQuZXJyb3IoKSk7XAorfQogSlNDX0ZP
UkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJ
TkVfQlVJTFRJTl9HRU5FUkFUT1IKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNv
bnN0cnVjdG9yLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1
Y3Rvci1TZXBhcmF0ZS5qcy1yZXN1bHQKaW5kZXggNmZmNTk3ZjU0ZTYyZjdkMTYwYjgyOWYzYWRj
OGZkOWNjZDNhNmQ5Mi4uY2M2NDI1OTAyZTc2ZDVkN2YzNmE4OWJhNzA0MDhkMGZhNGI1YjExZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
ZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpzLXJl
c3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9l
eHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItU2VwYXJhdGUuanMtcmVz
dWx0CkBAIC02Miw3ICs2Miw3IEBAIGV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkg
c19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUNvbnN0cnVjdEFiaWxpdHk7CiAgICAgbWFjcm8o
b2YpIFwKIAogI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5j
dGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcCi0gICAgSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworICAgIEV4cGVj
dGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUj
I0dlbmVyYXRvcihKU0M6OlZNJik7CiAKIEpTQ19GT1JFQUNIX0JVSUxUSU5DT05TVFJVQ1RPUl9C
VUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUNMQVJFX0JV
SUxUSU5fR0VORVJBVE9SCkBAIC0yMTAsOSArMjEwLDEzIEBAIGNvbnN0IGNoYXIqIHNfYnVpbHRp
bkNvbnN0cnVjdG9yRnJvbUNvZGUgPQogCiAKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJB
VE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENvdW50
KSBcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZN
JiB2bSkgXAorRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVy
cm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCiB7XAotICAgIHJldHVybiB2
bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwg
dm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0
LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IH0KKyAgICBpZiAoYXV0byBleHBlY3RlZFVubGlu
a2VkID0gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCkpXAor
ICAgICAgICByZXR1cm4gZXhwZWN0ZWRVbmxpbmtlZC52YWx1ZSgpLT5saW5rKHZtLCB2bS5idWls
dGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNj
b2RlTmFtZSMjSW50cmluc2ljKTtcCisgICAgZWxzZVwKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKGV4cGVjdGVkVW5saW5rZWQuZXJyb3IoKSk7XAorfQogSlNDX0ZPUkVBQ0hfQlVJTFRJ
TkNPTlNUUlVDVE9SX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5k
ZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUlu
dGVybmFsQ2xhc2hpbmdOYW1lcy1Db21iaW5lZC5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1JbnRl
cm5hbENsYXNoaW5nTmFtZXMtQ29tYmluZWQuanMtcmVzdWx0CmluZGV4IGJiMTIxMTc1YmU4ZDhm
Mjk2Y2VhZGQxNDZlODlkMzBjYWNmOTMzZGQuLmE0OThkNmFiYmVkOWQ4ZmFkZGNjNWUyMGI2ODZi
MzNlOWRkZDhlOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUludGVybmFsQ2xhc2hpbmdOYW1l
cy1Db21iaW5lZC5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
dGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtSW50ZXJuYWxDbGFzaGluZ05h
bWVzLUNvbWJpbmVkLmpzLXJlc3VsdApAQCAtMzEsMTMgKzMxLDE4IEBACiAKICNwcmFnbWEgb25j
ZQogCisKKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KKwogbmFtZXNwYWNlIEpTQyB7CiBjbGFz
cyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBWTTsKK2NsYXNzIFBhcnNlckVycm9yOwogCiBl
bnVtIGNsYXNzIENvbnN0cnVjdEFiaWxpdHkgOiB1bnNpZ25lZDsKIH0KIAorCiBuYW1lc3BhY2Ug
SlNDIHsKIAogLyogSW50ZXJuYWxDbGFzaGluZ05hbWVzICovCkBAIC02Miw3ICs2Nyw3IEBAIGV4
dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19pbnRlcm5hbENsYXNoaW5nTmFtZXNJ
c1JlYWRhYmxlU3RyZWFtTG9ja2VkCiAjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJ
T05fUFJJVkFURV9HTE9CQUxfTkFNRShtYWNybykgXAogCiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJ
Tl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3Vt
ZW50Q291bnQpIFwKLSAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVy
YXRvcihKU0M6OlZNJik7CisgICAgRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBK
U0M6OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKIAogSlNDX0ZP
UkVBQ0hfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVD
TEFSRV9CVUlMVElOX0dFTkVSQVRPUgpAQCAtMTQwLDkgKzE0NSwxMyBAQCBjb25zdCBjaGFyKiBz
X2ludGVybmFsQ2xhc2hpbmdOYW1lc0lzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlID0KIAogCiAj
ZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBv
dmVycmlkZGVuTmFtZSwgYXJndW1lbnRDb3VudCkgXAotSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUq
IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKK0V4cGVjdGVkPEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6
OlZNJiB2bSkgXAoge1wKLSAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVO
YW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2Rl
TmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyB9
CisgICAgaWYgKGF1dG8gZXhwZWN0ZWRVbmxpbmtlZCA9IHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygp
LT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpKVwKKyAgICAgICAgcmV0dXJuIGV4cGVjdGVkVW5saW5r
ZWQudmFsdWUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNT
b3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7XAorICAgIGVs
c2VcCisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChleHBlY3RlZFVubGlua2VkLmVycm9y
KCkpO1wKK30KIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFU
T1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUt
QW5vdGhlckd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1B
bm90aGVyR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKaW5kZXggYjhi
Y2ZiODQ3ZTAxNTA1MmVhNjY5ZjMxMmY1ZjM1ZmZlZGNkODZjOC4uY2ZkNzVmNzE3OTI0MmE4NGJh
MDEwMDM4ZjI5MDkzNTgzNWMwMWFiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Bbm90aGVyR3VhcmRlZElu
dGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Bbm90aGVyR3VhcmRl
ZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTM1LDYgKzM1LDcgQEAKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluVXRpbHMuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9JZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNGdW5jdGlv
bi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1BhcnNlckVycm9yLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC02MCw3ICs2MSw3IEBAIGV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxp
dHkgc19hbm90aGVyR3VhcmRlZEludGVybmFsQnVpbHRpbkxldHNGZXRjaENvZGVDCiAgICAgbWFj
cm8obGV0c0ZldGNoKSBcCiAKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2Rl
TmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJndW1lbnRDb3VudCkgXAotICAg
IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsK
KyAgICBFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+
IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOwogCiBXRUJDT1JFX0ZPUkVBQ0hfQU5PVEhF
UkdVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5F
UkFUT1IpCiAjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgpAQCAtNzcsNyArNzgsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiAjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5h
bWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGxlbmd0aCkgXAotICAgIEpTQzo6VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXAorRXhwZWN0ZWQ8
SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IG5hbWUj
I0V4ZWN1dGFibGUoKTsgXAogICAgIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgbmFtZSMjU291cmNl
KCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQogICAgIFdFQkNPUkVfRk9SRUFD
SF9BTk9USEVSR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NPREUoRVhQT1NFX0JVSUxU
SU5fRVhFQ1VUQUJMRVMpCiAjdW5kZWYgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMKQEAgLTEw
MCw3ICsxMDEsNyBAQCBwcml2YXRlOgogfTsKIAogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVD
VVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpIFwKLWlu
bGluZSBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBBbm90aGVyR3VhcmRlZEludGVy
bmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK2lubGluZSBF
eHBlY3RlZDxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJv
cj4gQW5vdGhlckd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4
ZWN1dGFibGUoKSBcCiB7XAogICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUpIHtcCiAgICAg
ICAgIEpTQzo6SWRlbnRpZmllciBleGVjdXRhYmxlTmFtZSA9IGZ1bmN0aW9uTmFtZSMjUHVibGlj
TmFtZSgpO1wKQEAgLTEzOSw3ICsxNDAsNyBAQCBwdWJsaWM6CiBpbmxpbmUgdm9pZCBBbm90aGVy
R3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnM6OmluaXQoSlNDOjpKU0dsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogI2RlZmluZSBFWFBPUlRfRlVOQ1RJT04oY29kZU5h
bWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGxlbmd0aClcCi0gICAgbV8jI2Z1bmN0
aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNGdW5jdGlv
bjo6Y3JlYXRlKG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0b3IobV92bSksICZnbG9iYWxPYmplY3Qp
KTsKKyAgICBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbi5zZXQobV92bSwgJmdsb2JhbE9iamVj
dCwgSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGUobV92bSwgY29kZU5hbWUjI0dlbmVyYXRvcihtX3Zt
KS52YWx1ZSgpLCAmZ2xvYmFsT2JqZWN0KSk7CiAgICAgV0VCQ09SRV9GT1JFQUNIX0FOT1RIRVJH
VUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShFWFBPUlRfRlVOQ1RJT04pCiAjdW5k
ZWYgRVhQT1JUX0ZVTkNUSU9OCiB9CkBAIC0yMTcsMTAgKzIxOCwxMCBAQCBjb25zdCBjaGFyKiBz
X2Fub3RoZXJHdWFyZGVkSW50ZXJuYWxCdWlsdGluTGV0c0ZldGNoQ29kZSA9CiAKIAogI2RlZmlu
ZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJp
ZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKLUpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2Rl
TmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCitFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYg
dm0pIFwKIHtcCiAgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxK
U1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcCi0gICAgcmV0dXJuIGNsaWVudERhdGEt
PmJ1aWx0aW5GdW5jdGlvbnMoKS5hbm90aGVyR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5z
KCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1
bmN0aW9ucygpLmFub3RoZXJHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFt
ZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisg
ICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5hbm90aGVyR3VhcmRlZElu
dGVybmFsQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS52YWx1ZSgpLT5s
aW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuYW5vdGhlckd1YXJkZWRJbnRl
cm5hbEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBz
XyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFwKIH0KIFdFQkNPUkVfRk9SRUFDSF9BTk9USEVSR1VB
UkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9S
KQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1BcmJp
dHJhcnlDb25kaXRpb25hbEd1YXJkLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtQXJiaXRyYXJ5
Q29uZGl0aW9uYWxHdWFyZC1TZXBhcmF0ZS5qcy1yZXN1bHQKaW5kZXggZDRkNDFiZjBjM2RjNzE1
NWIxNGNjYzE0ODcyZjRhNjUwYjRkYjkxOS4uN2Y1NjRjZWFiMTE3ZGIxNDY2OTYwMWZiYWZjMGU3
MWYwYmM4NDhkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1BcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkLVNl
cGFyYXRlLmpzLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0
cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUFyYml0cmFyeUNvbmRpdGlvbmFsR3VhcmQtU2Vw
YXJhdGUuanMtcmVzdWx0CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQnVpbHRpblV0aWxzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9QYXJzZXJFcnJvci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjEsNyArNjIs
NyBAQCBleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYXJiaXRyYXJ5Q29uZGl0
aW9uYWxHdWFyZElzUmVhZGFibGVTdHJlYW1MbwogICAgIG1hY3JvKGlzUmVhZGFibGVTdHJlYW1M
b2NrZWQpIFwKIAogI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBm
dW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcCi0gICAgSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworICAgIEV4
cGVjdGVkPEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gY29kZU5h
bWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CiAKIFdFQkNPUkVfRk9SRUFDSF9BUkJJVFJBUllDT05E
SVRJT05BTEdVQVJEX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQogI3Vu
ZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKQEAgLTc4LDcgKzc5LDcgQEAgcHVibGljOgog
ICAgIH0KIAogI2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlv
bk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpIFwKLSAgICBKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwKK0V4cGVjdGVkPEpTQzo6VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBuYW1lIyNFeGVjdXRhYmxl
KCk7IFwKICAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KICAgICBXRUJDT1JFX0ZPUkVBQ0hfQVJCSVRSQVJZ
Q09ORElUSU9OQUxHVUFSRF9CVUlMVElOX0NPREUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMp
CiAjdW5kZWYgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMKQEAgLTEwMSw3ICsxMDIsNyBAQCBw
cml2YXRlOgogfTsKIAogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBm
dW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpIFwKLWlubGluZSBKU0M6OlVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBBcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkQnVpbHRpbnNX
cmFwcGVyOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAoraW5saW5lIEV4cGVjdGVkPEpTQzo6VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBBcmJpdHJhcnlDb25kaXRp
b25hbEd1YXJkQnVpbHRpbnNXcmFwcGVyOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAoge1wKICAgICBp
ZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxlKSB7XAogICAgICAgICBKU0M6OklkZW50aWZpZXIgZXhl
Y3V0YWJsZU5hbWUgPSBmdW5jdGlvbk5hbWUjI1B1YmxpY05hbWUoKTtcCkBAIC0xODcsMTAgKzE4
OCwxMCBAQCBjb25zdCBjaGFyKiBzX2FyYml0cmFyeUNvbmRpdGlvbmFsR3VhcmRJc1JlYWRhYmxl
U3RyZWFtTG9ja2VkQ29kZSA9CiAKIAogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1Io
Y29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwK
LUpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZt
KSBcCitFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+
IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKIHtcCiAgICAgSlNWTUNsaWVudERh
dGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERh
dGEpOyBcCi0gICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5hcmJpdHJh
cnlDb25kaXRpb25hbEd1YXJkQnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5r
KHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuYXJiaXRyYXJ5Q29uZGl0aW9uYWxH
dWFyZEJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2Rl
TmFtZSMjSW50cmluc2ljKTsgXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rp
b25zKCkuYXJiaXRyYXJ5Q29uZGl0aW9uYWxHdWFyZEJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1
dGFibGUoKS52YWx1ZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCku
YXJiaXRyYXJ5Q29uZGl0aW9uYWxHdWFyZEJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBz
dGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAogfQogV0VCQ09SRV9GT1JF
QUNIX0FSQklUUkFSWUNPTkRJVElPTkFMR1VBUkRfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElO
X0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dl
YkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkQnVp
bHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKaW5kZXggNTkyNTRjZTJjZTA5MTE2ZjIwZDZjNWExYjY0
ZDUxMWYyNTVkNThkNy4uYTUxMzkwYWE5MDllMDRkNGI5NTU4MWU1MjZkOTBmMWY4MDgwOTRjZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
ZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2Vi
Q29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTM2LDYgKzM2LDcgQEAK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluVXRpbHMuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9JZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNGdW5j
dGlvbi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1BhcnNlckVycm9yLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC02MSw3ICs2Miw3IEBAIGV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFi
aWxpdHkgc19ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlQ29uCiAgICAg
bWFjcm8oaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCkgXAogCiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJ
Tl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3Vt
ZW50Q291bnQpIFwKLSAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVy
YXRvcihKU0M6OlZNJik7CisgICAgRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqLCBK
U0M6OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKIAogV0VCQ09S
RV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VO
RVJBVE9SKQogI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKQEAgLTc4LDcgKzc5LDcg
QEAgcHVibGljOgogICAgIH0KIAogI2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhu
YW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpIFwKLSAgICBKU0M6OlVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwKK0V4cGVjdGVk
PEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBuYW1l
IyNFeGVjdXRhYmxlKCk7IFwKICAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIG5hbWUjI1NvdXJj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KICAgICBXRUJDT1JFX0ZPUkVB
Q0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVT
KQogI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCkBAIC0xMDEsNyArMTAyLDcgQEAg
cHJpdmF0ZToKIH07CiAKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwg
ZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgbGVuZ3RoKSBcCi1pbmxpbmUgSlNDOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6Om5h
bWUjI0V4ZWN1dGFibGUoKSBcCitpbmxpbmUgRXhwZWN0ZWQ8SlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IEd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFw
cGVyOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAoge1wKICAgICBpZiAoIW1fIyNuYW1lIyNFeGVjdXRh
YmxlKSB7XAogICAgICAgICBKU0M6OklkZW50aWZpZXIgZXhlY3V0YWJsZU5hbWUgPSBmdW5jdGlv
bk5hbWUjI1B1YmxpY05hbWUoKTtcCkBAIC0xODcsMTAgKzE4OCwxMCBAQCBjb25zdCBjaGFyKiBz
X2d1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUgPQogCiAKICNkZWZpbmUg
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRk
ZW5OYW1lLCBhcmd1bWVudENvdW50KSBcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5h
bWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAorRXhwZWN0ZWQ8SlNDOjpGdW5jdGlvbkV4ZWN1
dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZt
KSBcCiB7XAogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXAotICAgIHJldHVybiBjbGllbnREYXRhLT5i
dWlsdGluRnVuY3Rpb25zKCkuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVj
dXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5ndWFyZGVk
QnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNj
b2RlTmFtZSMjSW50cmluc2ljKTsgXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVu
Y3Rpb25zKCkuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCku
dmFsdWUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmd1YXJkZWRC
dWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2Nv
ZGVOYW1lIyNJbnRyaW5zaWMpOyBcCiB9CiBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5f
QlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJ
TFRJTl9HRU5FUkFUT1IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1T
ZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUu
anMtcmVzdWx0CmluZGV4IDY1ZGQzZTg0MzEwNWNjOWJlZGQ3MzM0MTZhMTFmNTdiNzFjOTgwMTEu
LmE4ODQ4NmI3NTZlZDBkZDgwNDgyOGIyNWFhMzkxOTIyNjM4ODJjZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNv
cmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1H
dWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMzYsNiArMzYsNyBA
QAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5VdGlscy5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Z1
bmN0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUGFyc2VyRXJyb3IuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTYxLDcgKzYyLDcgQEAgZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0
QWJpbGl0eSBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2UKICAg
ICBtYWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKSBcCiAKICNkZWZpbmUgREVDTEFSRV9CVUlM
VElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJn
dW1lbnRDb3VudCkgXAotICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2Vu
ZXJhdG9yKEpTQzo6Vk0mKTsKKyAgICBFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSos
IEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOwogCiBXRUJD
T1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9C
VUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCkBAIC03
OCw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhF
Q1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgbGVuZ3RoKSBcCi0g
ICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBc
CitFeHBlY3RlZDxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJF
cnJvcj4gbmFtZSMjRXhlY3V0YWJsZSgpOyBcCiAgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBu
YW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CiAgICAgV0VC
Q09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9TRV9C
VUlMVElOX0VYRUNVVEFCTEVTKQogI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCkBA
IC0xMDEsNyArMTAyLDcgQEAgcHJpdmF0ZToKIH07CiAKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5f
RVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgbGVuZ3RoKSBc
Ci1pbmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogR3VhcmRlZEludGVybmFs
QnVpbHRpbkJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK2lubGluZSBFeHBl
Y3RlZDxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4g
R3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgp
IFwKIHtcCiAgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSkge1wKICAgICAgICAgSlNDOjpJ
ZGVudGlmaWVyIGV4ZWN1dGFibGVOYW1lID0gZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCk7XApA
QCAtMTQwLDcgKzE0MSw3IEBAIHB1YmxpYzoKIGlubGluZSB2b2lkIEd1YXJkZWRJbnRlcm5hbEJ1
aWx0aW5CdWlsdGluRnVuY3Rpb25zOjppbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKIHsKICNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9OKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUs
IG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpXAotICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9u
LnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZShtX3ZtLCBj
b2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7CisgICAgbV8jI2Z1bmN0
aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNGdW5jdGlv
bjo6Y3JlYXRlKG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0b3IobV92bSkudmFsdWUoKSwgJmdsb2Jh
bE9iamVjdCkpOwogICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JV
SUxUSU5fQ09ERShFWFBPUlRfRlVOQ1RJT04pCiAjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OCiB9CkBA
IC0yMTksMTAgKzIyMCwxMCBAQCBjb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5J
c1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZSA9CiAKIAogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9H
RU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50
Q291bnQpIFwKLUpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpT
Qzo6Vk0mIHZtKSBcCitFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFy
c2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKIHtcCiAgICAgSlNW
TUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZt
LmNsaWVudERhdGEpOyBcCi0gICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMo
KS5ndWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgp
LT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuZ3VhcmRlZEludGVybmFs
QnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNj
b2RlTmFtZSMjSW50cmluc2ljKTsgXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVu
Y3Rpb25zKCkuZ3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1
dGFibGUoKS52YWx1ZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCku
Z3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6
Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAogfQogV0VCQ09SRV9GT1JFQUNI
X0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVS
QVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUt
VW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0
aW4tU2VwYXJhdGUuanMtcmVzdWx0CmluZGV4IDA2YzkzNWFjODE0OTgyYTg5MTdiMTQ2YWMwMDE2
MWQ4M2VmZGY0YjcuLjRhYmIxZTBlMmI4MWYwY2NlNDEyMGM5NWE2N2EwNzIyOTQxODBlYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4
cGVjdGVkL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2Vi
Q29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5VdGlscy5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Z1
bmN0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUGFyc2VyRXJyb3IuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTU5LDcgKzYwLDcgQEAgZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0
QWJpbGl0eSBzX3VuZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUMKICAg
ICBtYWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKSBcCiAKICNkZWZpbmUgREVDTEFSRV9CVUlM
VElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJn
dW1lbnRDb3VudCkgXAotICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2Vu
ZXJhdG9yKEpTQzo6Vk0mKTsKKyAgICBFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSos
IEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOwogCiBXRUJD
T1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElO
X0dFTkVSQVRPUikKICN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCkBAIC03Niw3ICs3
Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAKICNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJM
RVMobmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgbGVuZ3RoKSBcCi0gICAgSlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCitFeHBl
Y3RlZDxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4g
bmFtZSMjRXhlY3V0YWJsZSgpOyBcCiAgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNT
b3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CiAgICAgV0VCQ09SRV9G
T1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNV
VEFCTEVTKQogI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCkBAIC05OSw3ICsxMDAs
NyBAQCBwcml2YXRlOgogfTsKIAogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhu
YW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpIFwKLWlubGluZSBKU0M6
OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFw
cGVyOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAoraW5saW5lIEV4cGVjdGVkPEpTQzo6VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqLCBKU0M6OlBhcnNlckVycm9yPiBVbmd1YXJkZWRCdWlsdGluQnVp
bHRpbnNXcmFwcGVyOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAoge1wKICAgICBpZiAoIW1fIyNuYW1l
IyNFeGVjdXRhYmxlKSB7XAogICAgICAgICBKU0M6OklkZW50aWZpZXIgZXhlY3V0YWJsZU5hbWUg
PSBmdW5jdGlvbk5hbWUjI1B1YmxpY05hbWUoKTtcCkBAIC0xODEsMTAgKzE4MiwxMCBAQCBjb25z
dCBjaGFyKiBzX3VuZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZSA9CiAK
IAogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFt
ZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKLUpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCitFeHBlY3RlZDxKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3Io
SlNDOjpWTSYgdm0pIFwKIHtcCiAgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcCi0gICAgcmV0dXJuIGNs
aWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS51bmd1YXJkZWRCdWlsdGluQnVpbHRpbnMoKS5j
b2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rp
b25zKCkudW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6
Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAorICAgIHJldHVybiBjbGllbnRE
YXRhLT5idWlsdGluRnVuY3Rpb25zKCkudW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5h
bWUjI0V4ZWN1dGFibGUoKS52YWx1ZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVu
Y3Rpb25zKCkudW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBz
dGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAogfQogV0VCQ09SRV9GT1JF
QUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRP
UikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUteG1s
Q2FzaW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJh
dGUuanMtcmVzdWx0CmluZGV4IGIyNGJjYTNjYWE1Y2QwMDhkYzg4YzI5Njc1ZDQzNDFhMzgwMWZi
YjYuLjQ0OTQ0ZTg4ZGViNWViY2MyODU1NmYxNTlhZjQ1YzQyNTZlY2UxYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dl
YkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS14bWxDYXNp
bmdUZXN0LVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0J1aWx0aW5VdGlscy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Z1bmN0aW9uLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvUGFyc2VyRXJyb3IuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAg
LTc1LDcgKzc2LDcgQEAgZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3htbENh
c2luZ1Rlc3RVcmxDYXNpbmdUZXN0Q29kZUNvbnN0cnVjdEFiaWwKICAgICBtYWNybyh4bWxDYXNp
bmdUZXN0KSBcCiAKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwg
ZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJndW1lbnRDb3VudCkgXAotICAgIEpTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKyAgICBF
eHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVO
YW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOwogCiBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVT
VF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUNMQVJF
X0JVSUxUSU5fR0VORVJBVE9SCkBAIC05Miw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKICNk
ZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVy
cmlkZGVuTmFtZSwgbGVuZ3RoKSBcCi0gICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCitFeHBlY3RlZDxKU0M6OlVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJFcnJvcj4gbmFtZSMjRXhlY3V0YWJsZSgpOyBcCiAgICAg
Y29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMj
bmFtZSMjU291cmNlOyB9CiAgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJ
Tl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQogI3VuZGVmIEVYUE9TRV9CVUlMVElO
X0VYRUNVVEFCTEVTCkBAIC0xMTUsNyArMTE2LDcgQEAgcHJpdmF0ZToKIH07CiAKICNkZWZpbmUg
REVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVu
TmFtZSwgbGVuZ3RoKSBcCi1pbmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
eG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK2lubGlu
ZSBFeHBlY3RlZDxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNDOjpQYXJzZXJF
cnJvcj4geG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwK
IHtcCiAgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSkge1wKICAgICAgICAgSlNDOjpJZGVu
dGlmaWVyIGV4ZWN1dGFibGVOYW1lID0gZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCk7XApAQCAt
MTU0LDcgKzE1NSw3IEBAIHB1YmxpYzoKIGlubGluZSB2b2lkIHhtbENhc2luZ1Rlc3RCdWlsdGlu
RnVuY3Rpb25zOjppbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICNk
ZWZpbmUgRVhQT1JUX0ZVTkNUSU9OKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5O
YW1lLCBsZW5ndGgpXAotICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAm
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZShtX3ZtLCBjb2RlTmFtZSMjR2Vu
ZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7CisgICAgbV8jI2Z1bmN0aW9uTmFtZSMjRnVu
Y3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlKG1f
dm0sIGNvZGVOYW1lIyNHZW5lcmF0b3IobV92bSkudmFsdWUoKSwgJmdsb2JhbE9iamVjdCkpOwog
ICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fQ09ERShFWFBPUlRfRlVO
Q1RJT04pCiAjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OCiB9CkBAIC0yNzIsMTAgKzI3MywxMCBAQCBj
b25zdCBjaGFyKiBzX3htbENhc2luZ1Rlc3RVcmxDYXNpbmdUZXN0Q29kZSA9CiAKIAogI2RlZmlu
ZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJp
ZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKLUpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2Rl
TmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCitFeHBlY3RlZDxKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZSosIEpTQzo6UGFyc2VyRXJyb3I+IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYg
dm0pIFwKIHtcCiAgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxK
U1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcCi0gICAgcmV0dXJuIGNsaWVudERhdGEt
PmJ1aWx0aW5GdW5jdGlvbnMoKS54bWxDYXNpbmdUZXN0QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhl
Y3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkueG1sQ2Fz
aW5nVGVzdEJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNj
b2RlTmFtZSMjSW50cmluc2ljKTsgXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVu
Y3Rpb25zKCkueG1sQ2FzaW5nVGVzdEJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS52
YWx1ZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkueG1sQ2FzaW5n
VGVzdEJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2Rl
TmFtZSMjSW50cmluc2ljKTsgXAogfQogV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJ
TFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJ
Tl9HRU5FUkFUT1IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBlYjQ2N2VhOTgxMzlk
ZmJjYWQ5MDIxZWUxODEyMTkyOTA2ZTUxYjM1Li45ZWMwMGViMTRjYTFkN2UwZGNhYjUyYmY0ZWY1
NDU1ZjE1M2VjMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0xNzksNyArMTc5
LDYgQEAgYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcAogYmluZGluZ3MvU2NyaXB0VmFsdWUuY3Bw
CiAKIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKLWJ1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlQ3JlYXRvci5jcHAKIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5jcHAKIAogYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHAKQEAgLTY1NCw2ICs2NTMsNyBAQCBwYXJzZXIvTm9kZXMuY3BwCiBwYXJz
ZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcAogcGFyc2VyL1BhcnNlci5jcHAKIHBhcnNlci9QYXJz
ZXJBcmVuYS5jcHAKK3BhcnNlci9QYXJzZXJFcnJvci5jcHAKIHBhcnNlci9Tb3VyY2VQcm92aWRl
ci5jcHAKIHBhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlLmNwcAogcGFyc2VyL1VubGlua2VkU291
cmNlQ29kZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDJiNzllN2U2ZWY5NWNlMjFjNDQzMjNhNmVhNDFkMzZhMzNmYTM1OTUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlQ3Jl
YXRvci5oIgotCi0jaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCi0KLW5hbWVzcGFjZSBK
U0MgewotCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1dGFi
bGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBDb25zdHJ1Y3RvcktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBhYmlsaXR5KQotewot
ICAgIHJldHVybiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUodm0sIHNvdXJj
ZSwgaWRlbnQsIGtpbmQsIGFiaWxpdHkpOwotfQotICAgIAotfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFi
bGVDcmVhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVDcmVhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5YzA4ODRiN2I2
MWRmMDgwY2RhYzNhZTVjYjJkMDZlZTMzNWFlMTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlQ3JlYXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaW5jbHVkZSAiQ29uc3RydWN0QWJpbGl0eS5oIgotI2luY2x1ZGUgIlBhcnNlck1vZGVzLmgi
Ci0jaW5jbHVkZSAiU291cmNlQ29kZS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotSlNfRVhQT1JU
X1BSSVZBVEUgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRh
YmxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBDb25zdHJ1Y3Rv
cktpbmQsIENvbnN0cnVjdEFiaWxpdHkpOwotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAK
aW5kZXggYWQwZDgzOWFlMTkxODQwNDkzYzY1ZmM0MjgyZDQ3NTUyMTA3MTZkYy4uNTQwNTllZWI0
YTgwODZiMDYwYTA2NDMwOGVkOGU5N2NlZGQxNTEzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiUGFyc2VyLmgiCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTEsMjUgKzUy
LDMyIEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNy
ZWF0ZURlZmF1bHRDb25zdHJ1Y3RvcihDb25zdHJ1CiAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmU6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpCYXNlOgot
ICAgICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBtYWtlU291cmNlKGJhc2VDb25z
dHJ1Y3RvckNvZGUsIHsgfSksIG5hbWUsIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0
eTo6Q2FuQ29uc3RydWN0KTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUV4ZWN1dGFibGVPckNyYXNo
KG1fdm0sIG1ha2VTb3VyY2UoYmFzZUNvbnN0cnVjdG9yQ29kZSwgeyB9KSwgbmFtZSwgY29uc3Ry
dWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QpOwogICAgIGNhc2UgQ29u
c3RydWN0b3JLaW5kOjpFeHRlbmRzOgotICAgICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZSht
X3ZtLCBtYWtlU291cmNlKGRlcml2ZWRDb25zdHJ1Y3RvckNvZGUsIHsgfSksIG5hbWUsIGNvbnN0
cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0KTsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZUV4ZWN1dGFibGVPckNyYXNoKG1fdm0sIG1ha2VTb3VyY2UoZGVyaXZlZENvbnN0
cnVjdG9yQ29kZSwgeyB9KSwgbmFtZSwgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5
OjpDYW5Db25zdHJ1Y3QpOwogICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWls
dGluRXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiBjb2RlLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkpCitFeHBlY3RlZFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1
dGFibGUoY29uc3QgU291cmNlQ29kZSYgY29kZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQ29u
c3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KQogewogICAgIHJldHVybiBjcmVhdGVFeGVj
dXRhYmxlKG1fdm0sIGNvZGUsIG5hbWUsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgY29uc3RydWN0
QWJpbGl0eSk7CiB9CiAKIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGlu
RXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIGNvZGUsIGNvbnN0IElkZW50aWZp
ZXImIG5hbWUsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSkKIHsKLSAgICByZXR1
cm4gQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKHZtLCBjb2RlLCBuYW1lLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGNvbnN0cnVjdEFiaWxpdHkpOworICAgIHJldHVybiBCdWls
dGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGVPckNyYXNoKHZtLCBjb2RlLCBuYW1lLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGNvbnN0cnVjdEFiaWxpdHkpOwogfQogCi1VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZN
JiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBD
b25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVj
dEFiaWxpdHkpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVz
OjpjcmVhdGVFeGVjdXRhYmxlT3JDcmFzaChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2lu
ZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KQoreworICAgIGlmIChhdXRvIGV4
cGVjdGVkID0gQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKHZtLCBzb3VyY2Us
IG5hbWUsIGNvbnN0cnVjdG9yS2luZCwgY29uc3RydWN0QWJpbGl0eSkpCisgICAgICAgIHJldHVy
biBleHBlY3RlZC52YWx1ZSgpOworICAgIGRhdGFMb2dMbigiRmF0YWwgZXJyb3IgY29tcGlsaW5n
IGJ1aWx0aW4gZnVuY3Rpb24gJyIsIG5hbWUuc3RyaW5nKCksICInIik7CisgICAgQ1JBU0goKTsK
K30KKworRXhwZWN0ZWRVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBCdWlsdGluRXhlY3V0YWJs
ZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNv
bnN0IElkZW50aWZpZXImIG5hbWUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIENv
bnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSkKIHsKICAgICBKU1RleHRQb3NpdGlvbiBw
b3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOwogICAgIFBhcnNlckVycm9yIGVycm9yOwpAQCAtODMs
OCArOTEsOCBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVz
OjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgUwogICAgICAgICAmcG9zaXRpb25CZWZv
cmVMYXN0TmV3bGluZSwgY29uc3RydWN0b3JLaW5kKTsKIAogICAgIGlmICghcHJvZ3JhbSkgewot
ICAgICAgICBkYXRhTG9nKCJGYXRhbCBlcnJvciBjb21waWxpbmcgYnVpbHRpbiBmdW5jdGlvbiAn
IiwgbmFtZS5zdHJpbmcoKSwgIic6ICIsIGVycm9yLm1lc3NhZ2UoKSk7Ci0gICAgICAgIENSQVNI
KCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChXVEZNb3ZlKGVycm9yKSk7CiAgICAgfQogCiAgICAgU3RhdGVt
ZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVudCgpOwpAQCAt
MTA2LDcgKzExNCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0
YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTCiAgICAgbWV0YWRhdGEtPm92
ZXJyaWRlTmFtZShuYW1lKTsKICAgICBWYXJpYWJsZUVudmlyb25tZW50IGR1bW15VERaVmFyaWFi
bGVzOwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUg
PSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0
YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBk
dW1teVREWlZhcmlhYmxlcywgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBXVEZNb3ZlKHBhcmVu
dFNvdXJjZU92ZXJyaWRlKSk7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uRXhlY3V0YWJsZTsKKyAgICBy
ZXR1cm4gRXhwZWN0ZWRVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShmdW5jdGlvbkV4ZWN1dGFi
bGUpOwogfQogCiB2b2lkIEJ1aWx0aW5FeGVjdXRhYmxlczo6ZmluYWxpemUoSGFuZGxlPFVua25v
d24+LCB2b2lkKiBjb250ZXh0KQpAQCAtMTE1LDE1ICsxMjMsMTggQEAgdm9pZCBCdWlsdGluRXhl
Y3V0YWJsZXM6OmZpbmFsaXplKEhhbmRsZTxVbmtub3duPiwgdm9pZCogY29udGV4dCkKIH0KIAog
I2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIG92
ZXJyaWRlTmFtZSwgbGVuZ3RoKSBcCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRp
bkV4ZWN1dGFibGVzOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAorRXhwZWN0ZWRVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSBCdWlsdGluRXhlY3V0YWJsZXM6Om5hbWUjI0V4ZWN1dGFibGUoKSBcCiB7
XAogICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUpIHtcCiAgICAgICAgIElkZW50aWZpZXIg
ZXhlY3V0YWJsZU5hbWUgPSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZ1bmN0
aW9uTmFtZSMjUHVibGljTmFtZSgpO1wKICAgICAgICAgaWYgKG92ZXJyaWRlTmFtZSlcCiAgICAg
ICAgICAgICBleGVjdXRhYmxlTmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fdm0sIG92
ZXJyaWRlTmFtZSk7XAotICAgICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IFdlYWs8VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU+KGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fIyNuYW1lIyNT
b3VyY2UsIGV4ZWN1dGFibGVOYW1lLCBzXyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSksIHRoaXMs
ICZtXyMjbmFtZSMjRXhlY3V0YWJsZSk7XAorICAgICAgICBFeHBlY3RlZFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlIGYgPSBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtXyMjbmFtZSMjU291cmNl
LCBleGVjdXRhYmxlTmFtZSwgc18jI25hbWUjI0NvbnN0cnVjdEFiaWxpdHkpO1wKKyAgICAgICAg
aWYgKCFmLmhhc192YWx1ZSgpKVwKKyAgICAgICAgICAgIHJldHVybiBmO1wKKyAgICAgICAgbV8j
I25hbWUjI0V4ZWN1dGFibGUgPSBXZWFrPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPihmLnZh
bHVlKCksIHRoaXMsICZtXyMjbmFtZSMjRXhlY3V0YWJsZSk7XAogICAgIH1cCi0gICAgcmV0dXJu
IG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKKyAgICByZXR1cm4gRXhwZWN0ZWRVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZShtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKSk7XAogfQogSlND
X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQogI3VuZGVm
IEVYUE9TRV9CVUlMVElOX1NPVVJDRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaAppbmRleCAzNjhhMzFiN2FjYjZhMzJjOWQ1OGU1
ZGUyODAxYzI4OWJiZjUyYTJmLi5jZTUwOGJlMzY0MDRjZjI1Zjg1OTZhMThmYzNlMGZlNTU5YjY4
MmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlcy5oCkBAIC0yNiwxMCArMjYsMTEgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiSlNDQnVpbHRpbnMuaCIKLSNpbmNsdWRlICJQYXJzZXJNb2Rlcy5oIgorI2luY2x1ZGUgIlBh
cnNlci5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJXZWFrLmgiCiAjaW5j
bHVkZSAiV2Vha0hhbmRsZU93bmVyLmgiCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewogCkBAIC0zNywxMyArMzgsMTUgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU7CiBjbGFzcyBJZGVudGlmaWVyOwogY2xhc3MgVk07CiAKK3VzaW5nIEV4cGVj
dGVkVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgPSBFeHBlY3RlZDxVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSosIFBhcnNlckVycm9yPjsKKwogY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzIGZp
bmFsOiBwcml2YXRlIFdlYWtIYW5kbGVPd25lciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQnVpbHRpbkV4ZWN1dGFibGVzKFZNJik7CiAKICNk
ZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVy
cmlkZGVuTmFtZSwgbGVuZ3RoKSBcCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMj
RXhlY3V0YWJsZSgpOyBcCitFeHBlY3RlZFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIG5hbWUj
I0V4ZWN1dGFibGUoKTsgXAogY29uc3QgU291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgeyByZXR1
cm4gbV8jI25hbWUjI1NvdXJjZTsgfQogICAgIAogICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09E
RShFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKQEAgLTUxLDEzICs1NCwxNCBAQCBjb25zdCBT
b3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CiAK
ICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRGVmYXVsdENvbnN0cnVjdG9y
KENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CiAKLSAgICBzdGF0aWMg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGUoVk0mLCBjb25zdCBT
b3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIENvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0
QWJpbGl0eSk7CisgICAgc3RhdGljIEV4cGVjdGVkVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUg
Y3JlYXRlRXhlY3V0YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVy
JiwgQ29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5KTsKKyAgICBzdGF0aWMgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGVPckNyYXNoKFZNJiwgY29uc3Qg
U291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBDb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVj
dEFiaWxpdHkpOwogcHJpdmF0ZToKICAgICB2b2lkIGZpbmFsaXplKEhhbmRsZTxVbmtub3duPiwg
dm9pZCogY29udGV4dCkgb3ZlcnJpZGU7CiAKICAgICBWTSYgbV92bTsKIAotICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3VyY2VD
b2RlJiwgY29uc3QgSWRlbnRpZmllciYsIENvbnN0cnVjdEFiaWxpdHkpOworICAgIEV4cGVjdGVk
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoY29uc3Qg
U291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBDb25zdHJ1Y3RBYmlsaXR5KTsKIAogI2Rl
ZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBv
dmVycmlkZGVuTmFtZSwgbGVuZ3RoKVwKICAgICBTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAppbmRleCBiNzI1NWFjNjIxNmUwOWRjZTFhZDRkN2M2NjllYzU0NmEyY2I0
NjczLi5lOGJiZGU2YjY0YTc2ZDdjNDEyOGJkMmVjY2RjYzdkNDJlNDVhZWUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCkBAIC0zMSw2ICszMSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgorI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNs
dWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJFcnJvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckVycm9yLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lNTI3OThlN2FmYzI0N2UxZjQ3ZjU3MjhiYWVmNTVhNDBjMjA0ZjU3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJFcnJvci5jcHAKQEAg
LTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgorCisjaW5j
bHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5o
IgorI2luY2x1ZGUgIkhlYXBDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworSlNPYmplY3QqIFBhcnNlckVycm9yOjp0b0Vy
cm9yT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgaW50IG92ZXJyaWRlTGluZU51bWJlcikKK3sKKyAgICBFeGVjU3RhdGUqIGV4ZWMg
PSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAg
IGNhc2UgRXJyb3JOb25lOgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBjYXNlIFN5bnRh
eEVycm9yOiB7CisgICAgICAgIGF1dG8gc3ludGF4RXJyb3IgPSBjcmVhdGVTeW50YXhFcnJvcihl
eGVjLCBtX21lc3NhZ2UpOworICAgICAgICBhdXRvIGxpbmUgPSBvdmVycmlkZUxpbmVOdW1iZXIg
PT0gLTEgPyBtX2xpbmUgOiBvdmVycmlkZUxpbmVOdW1iZXI7CisgICAgICAgIHJldHVybiBhZGRF
cnJvckluZm8oZXhlYywgc3ludGF4RXJyb3IsIGxpbmUsIHNvdXJjZSk7CisgICAgfQorICAgIGNh
c2UgRXZhbEVycm9yOgorICAgICAgICByZXR1cm4gY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgbV9t
ZXNzYWdlKTsKKyAgICBjYXNlIFN0YWNrT3ZlcmZsb3c6IHsKKyAgICAgICAgRXJyb3JIYW5kbGlu
Z1Njb3BlIGVycm9yU2NvcGUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgcmV0dXJuIGNy
ZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICB9CisgICAgY2FzZSBPdXRPZk1lbW9y
eToKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgfQor
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCituYW1lc3BhY2UgV1RGIHsKKworY29uc3QgY2hhciogdG9TdHJpbmcoSlNDOjpQYXJzZXJF
cnJvcjo6U3ludGF4RXJyb3JUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAg
Y2FzZSBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJvck5vbmU6IHJldHVybiAiU3ludGF4RXJy
b3JOb25lIjsKKyAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9ySXJyZWNvdmVy
YWJsZTogcmV0dXJuICJTeW50YXhFcnJvcklycmVjb3ZlcmFibGUiOworICAgIGNhc2UgSlNDOjpQ
YXJzZXJFcnJvcjo6U3ludGF4RXJyb3JVbnRlcm1pbmF0ZWRMaXRlcmFsOiByZXR1cm4gIlN5bnRh
eEVycm9yVW50ZXJtaW5hdGVkTGl0ZXJhbCI7CisgICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpT
eW50YXhFcnJvclJlY292ZXJhYmxlOiByZXR1cm4gIlN5bnRheEVycm9yUmVjb3ZlcmFibGUiOwor
ICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQordm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9yVHlw
ZSB0eXBlKQoreworICAgIG91dC5wcmludCh0b1N0cmluZyh0eXBlKSk7Cit9CisKK2NvbnN0IGNo
YXIqIHRvU3RyaW5nKEpTQzo6UGFyc2VyRXJyb3I6OkVycm9yVHlwZSB0eXBlKQoreworICAgIHN3
aXRjaCAodHlwZSkgeworICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6RXJyb3JOb25lOiByZXR1
cm4gIkVycm9yTm9uZSI7CisgICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpTdGFja092ZXJmbG93
OiByZXR1cm4gIlN0YWNrT3ZlcmZsb3ciOworICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6RXZh
bEVycm9yOiByZXR1cm4gIkV2YWxFcnJvciI7CisgICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpP
dXRPZk1lbW9yeTogcmV0dXJuICJPdXRPZk1lbW9yeSI7CisgICAgY2FzZSBKU0M6OlBhcnNlckVy
cm9yOjpTeW50YXhFcnJvcjogcmV0dXJuICJTeW50YXhFcnJvciI7CisgICAgfQorICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mIG91dCwgSlNDOjpQYXJzZXJFcnJvcjo6RXJyb3JUeXBlIHR5cGUpCit7CisgICAgb3V0LnBy
aW50KHRvU3RyaW5nKHR5cGUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckVycm9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckVycm9yLmgKaW5kZXggNzg4M2VmZWQyMjUwMjJjMDIw
NmI3ODY0MGI1YTcxNzg5ZDljZWE1Mi4uZTQ1MWEyYzI1ZGU0NWUwN2FkY2JhMGMzZGVkOWJmMzdh
OGZiM2YyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJF
cnJvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJyb3IuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE4IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjUsOSArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkVycm9yLmgiCi0jaW5j
bHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5o
IgogI2luY2x1ZGUgIlBhcnNlclRva2Vucy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCkBAIC04MiwzMyArNzksMTAgQEAgcHVibGljOgogICAgIFN5bnRheEVycm9yVHlwZSBz
eW50YXhFcnJvclR5cGUoKSBjb25zdCB7IHJldHVybiBtX3N5bnRheEVycm9yVHlwZTsgfQogICAg
IGNvbnN0IEpTVG9rZW4mIHRva2VuKCkgY29uc3QgeyByZXR1cm4gbV90b2tlbjsgfQogICAgIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZTsgfQorICAgIEVy
cm9yVHlwZSB0eXBlKCkgY29uc3Qge3JldHVybiBtX3R5cGU7IH0KICAgICBpbnQgbGluZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbGluZTsgfQogCi0gICAgSlNPYmplY3QqIHRvRXJyb3JPYmplY3QoCi0g
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgCi0gICAgICAgIGludCBvdmVycmlkZUxpbmVOdW1iZXIgPSAtMSkKLSAgICB7Ci0gICAg
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwotICAgICAg
ICBzd2l0Y2ggKG1fdHlwZSkgewotICAgICAgICBjYXNlIEVycm9yTm9uZToKLSAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgICAgICBjYXNlIFN5bnRheEVycm9yOgotICAgICAgICAgICAg
cmV0dXJuIGFkZEVycm9ySW5mbygKLSAgICAgICAgICAgICAgICBleGVjLCAKLSAgICAgICAgICAg
ICAgICBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBtX21lc3NhZ2UpLCAKLSAgICAgICAgICAgICAg
ICBvdmVycmlkZUxpbmVOdW1iZXIgPT0gLTEgPyBtX2xpbmUgOiBvdmVycmlkZUxpbmVOdW1iZXIs
IHNvdXJjZSk7Ci0gICAgICAgIGNhc2UgRXZhbEVycm9yOgotICAgICAgICAgICAgcmV0dXJuIGNy
ZWF0ZVN5bnRheEVycm9yKGV4ZWMsIG1fbWVzc2FnZSk7Ci0gICAgICAgIGNhc2UgU3RhY2tPdmVy
ZmxvdzogewotICAgICAgICAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUoZ2xvYmFs
T2JqZWN0LT52bSgpKTsKLSAgICAgICAgICAgIHJldHVybiBjcmVhdGVTdGFja092ZXJmbG93RXJy
b3IoZXhlYyk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBPdXRPZk1lbW9yeToKLSAgICAgICAg
ICAgIHJldHVybiBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOwotICAgICAgICB9Ci0gICAg
ICAgIENSQVNIKCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KKyAgICBKU09iamVj
dCogdG9FcnJvck9iamVjdChKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBpbnQg
b3ZlcnJpZGVMaW5lTnVtYmVyID0gLTEpOwogCiBwcml2YXRlOgogICAgIEpTVG9rZW4gbV90b2tl
bjsKQEAgLTEyMSw0OCArOTUsOCBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5h
bWVzcGFjZSBXVEYgewotCi1pbmxpbmUgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBv
dXQsIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9yVHlwZSB0eXBlKQotewotICAgIHN3aXRj
aCAodHlwZSkgewotICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JOb25lOgot
ICAgICAgICBvdXQucHJpbnQoIlN5bnRheEVycm9yTm9uZSIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJvcklycmVjb3ZlcmFibGU6Ci0gICAg
ICAgIG91dC5wcmludCgiU3ludGF4RXJyb3JJcnJlY292ZXJhYmxlIik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9yVW50ZXJtaW5hdGVkTGl0
ZXJhbDoKLSAgICAgICAgb3V0LnByaW50KCJTeW50YXhFcnJvclVudGVybWluYXRlZExpdGVyYWwi
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6U3ludGF4RXJy
b3JSZWNvdmVyYWJsZToKLSAgICAgICAgb3V0LnByaW50KCJTeW50YXhFcnJvclJlY292ZXJhYmxl
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLX0KLQotaW5saW5lIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBKU0M6OlBhcnNlckVycm9yOjpFcnJvclR5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5
cGUpIHsKLSAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OkVycm9yTm9uZToKLSAgICAgICAgb3V0
LnByaW50KCJFcnJvck5vbmUiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpQYXJz
ZXJFcnJvcjo6U3RhY2tPdmVyZmxvdzoKLSAgICAgICAgb3V0LnByaW50KCJTdGFja092ZXJmbG93
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OkV2YWxFcnJv
cjoKLSAgICAgICAgb3V0LnByaW50KCJFdmFsRXJyb3IiKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6T3V0T2ZNZW1vcnk6Ci0gICAgICAgIG91dC5wcmludCgi
T3V0T2ZNZW1vcnkiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJv
cjo6U3ludGF4RXJyb3I6Ci0gICAgICAgIG91dC5wcmludCgiU3ludGF4RXJyb3IiKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotfQotCitjb25zdCBjaGFyKiB0b1N0cmluZyhKU0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJv
clR5cGUpOwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpQYXJzZXJFcnJv
cjo6U3ludGF4RXJyb3JUeXBlKTsKK2NvbnN0IGNoYXIqIHRvU3RyaW5nKEpTQzo6UGFyc2VyRXJy
b3I6OkVycm9yVHlwZSk7Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OlBh
cnNlckVycm9yOjpFcnJvclR5cGUpOwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuY3Bw
CmluZGV4IDgwMGNmYTA5NjQxYzBjYTI4MDhmMDU2MDEyZWRhM2QwMjMyMjM3ZjcuLjE3NjE5OTA5
YzUzZjRmZDUwY2IyZDM0Y2I0ZDhhMjRiNDcyYjkxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC00
MSw3ICs0MSw3IEBAIHZvaWQgQXN5bmNJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgQVNTRVJUKGluaGVyaXRz
KHZtLCBpbmZvKCkpKTsKICAgICBkaWRCZWNvbWVQcm90b3R5cGUoKTsKIAotICAgIEpTRnVuY3Rp
b24qIGFzeW5jSXRlcmF0b3JQcm90b3R5cGVGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgYXN5bmNJdGVyYXRvclByb3RvdHlwZVN5bWJvbEFzeW5jSXRlcmF0b3JHZXR0ZXJDb2RlR2Vu
ZXJhdG9yKHZtKSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBKU0Z1bmN0aW9uKiBhc3luY0l0ZXJhdG9y
UHJvdG90eXBlRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGFzeW5jSXRlcmF0b3JQ
cm90b3R5cGVTeW1ib2xBc3luY0l0ZXJhdG9yR2V0dGVyQ29kZUdlbmVyYXRvcih2bSkudmFsdWUo
KSwgZ2xvYmFsT2JqZWN0KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+YXN5bmNJdGVyYXRvclN5bWJvbCwgYXN5bmNJdGVyYXRvclByb3RvdHlw
ZUZ1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcAppbmRleCBhMzk1MzliZDAxNDZlMzk3YzUxMTY0NzYzYjU3NGFlYjAy
ZDRjMmZiLi5lNWM4MzllMjFlYzU0NmE4NDI2NDE3OTEyNjMxODZiNmM3YjEwODE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
CkBAIC02MywxMSArNjMsMTEgQEAgdm9pZCBGdW5jdGlvblByb3RvdHlwZTo6YWRkRnVuY3Rpb25Q
cm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGcKICAgICBKU0Z1bmN0
aW9uKiB0b1N0cmluZ0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nLnN0cmluZygpLCBmdW5jdGlvblByb3Rv
RnVuY1RvU3RyaW5nKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+dG9TdHJpbmcsIHRvU3RyaW5nRnVuY3Rpb24sIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAotICAgICphcHBseUZ1bmN0aW9u
ID0gcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9i
amVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXBwbHlQdWJsaWNOYW1lKCks
IGZ1bmN0aW9uUHJvdG90eXBlQXBwbHlDb2RlR2VuZXJhdG9yKHZtKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgICpjYWxsRnVuY3Rpb24g
PSBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jYWxsUHVibGljTmFtZSgpLCBm
dW5jdGlvblByb3RvdHlwZUNhbGxDb2RlR2VuZXJhdG9yKHZtKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIHB1dERpcmVjdEJ1aWx0aW5G
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFt
ZXMtPmJpbmQsIGZ1bmN0aW9uUHJvdG90eXBlQmluZENvZGVHZW5lcmF0b3Iodm0pLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgKmFwcGx5
RnVuY3Rpb24gPSBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hcHBseVB1Ymxp
Y05hbWUoKSwgZnVuY3Rpb25Qcm90b3R5cGVBcHBseUNvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAg
ICAqY2FsbEZ1bmN0aW9uID0gcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24odm0sIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2Fs
bFB1YmxpY05hbWUoKSwgZnVuY3Rpb25Qcm90b3R5cGVDYWxsQ29kZUdlbmVyYXRvcih2bSkudmFs
dWUoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkp
OworICAgIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9i
YWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmJpbmQsIGZ1bmN0aW9uUHJvdG90eXBlQmluZENv
ZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKIAotICAgICpoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBmdW5jdGlvblByb3RvdHlwZVN5bWJvbEhhc0luc3RhbmNl
Q29kZUdlbmVyYXRvcih2bSksIGdsb2JhbE9iamVjdCk7CisgICAgKmhhc0luc3RhbmNlU3ltYm9s
RnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uUHJvdG90eXBlU3ltYm9s
SGFzSW5zdGFuY2VDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpLCBnbG9iYWxPYmplY3QpOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5oYXNJbnN0
YW5jZVN5bWJvbCwgKmhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24sIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBlMTM5OGUyZjc0ZTgyNWM0YjIyMWFjMGRj
NWI0YWJlZTkxOTdmYWZlLi40OTJhYzRhOGFmYTE1M2JiOWZmNWViZmU0ODZjZmVlNzIzNzEyNGU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCkBAIC00NDQsMjQgKzQ0NCwyNCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2
bSkKICAgICAgICAgfSk7CiAgICAgbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24uaW5pdExhdGVy
KAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKLSAg
ICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBhcnJheVByb3Rv
dHlwZVZhbHVlc0NvZGVHZW5lcmF0b3IoaW5pdC52bSksIGluaXQub3duZXIpKTsKKyAgICAgICAg
ICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBhcnJheVByb3RvdHlwZVZh
bHVlc0NvZGVHZW5lcmF0b3IoaW5pdC52bSkudmFsdWUoKSwgaW5pdC5vd25lcikpOwogICAgICAg
ICB9KTsKICAgICBtX2luaXRpYWxpemVQcm9taXNlRnVuY3Rpb24uaW5pdExhdGVyKAogICAgICAg
ICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKLSAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBwcm9taXNlT3BlcmF0aW9uc0lu
aXRpYWxpemVQcm9taXNlQ29kZUdlbmVyYXRvcihpbml0LnZtKSwgaW5pdC5vd25lcikpOworICAg
ICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIHByb21pc2VPcGVy
YXRpb25zSW5pdGlhbGl6ZVByb21pc2VDb2RlR2VuZXJhdG9yKGluaXQudm0pLnZhbHVlKCksIGlu
aXQub3duZXIpKTsKICAgICAgICAgfSk7CiAKICAgICBtX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlv
bi5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Z1bmN0aW9uPiYg
aW5pdCkgewotICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0s
IGl0ZXJhdG9ySGVscGVyc1BlcmZvcm1JdGVyYXRpb25Db2RlR2VuZXJhdG9yKGluaXQudm0pLCBp
bml0Lm93bmVyKSk7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5p
dC52bSwgaXRlcmF0b3JIZWxwZXJzUGVyZm9ybUl0ZXJhdGlvbkNvZGVHZW5lcmF0b3IoaW5pdC52
bSkudmFsdWUoKSwgaW5pdC5vd25lcikpOwogICAgICAgICB9KTsKIAogICAgIG1fcHJvbWlzZVJl
c29sdmVGdW5jdGlvbi5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxK
U0Z1bmN0aW9uPiYgaW5pdCkgewotICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3Jl
YXRlKGluaXQudm0sIHByb21pc2VDb25zdHJ1Y3RvclJlc29sdmVDb2RlR2VuZXJhdG9yKGluaXQu
dm0pLCBpbml0Lm93bmVyKSk7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVh
dGUoaW5pdC52bSwgcHJvbWlzZUNvbnN0cnVjdG9yUmVzb2x2ZUNvZGVHZW5lcmF0b3IoaW5pdC52
bSkudmFsdWUoKSwgaW5pdC5vd25lcikpOwogICAgICAgICB9KTsKIAotICAgIG1fbmV3UHJvbWlz
ZUNhcGFiaWxpdHlGdW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
cHJvbWlzZU9wZXJhdGlvbnNOZXdQcm9taXNlQ2FwYWJpbGl0eUNvZGVHZW5lcmF0b3Iodm0pLCB0
aGlzKSk7CisgICAgbV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uLnNldCh2bSwgdGhpcywg
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBwcm9taXNlT3BlcmF0aW9uc05ld1Byb21pc2VDYXBhYmls
aXR5Q29kZUdlbmVyYXRvcih2bSkudmFsdWUoKSwgdGhpcykpOwogICAgIG1fZnVuY3Rpb25Qcm90
b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBoYXNJbnN0YW5jZVN5bWJv
bEZ1bmN0aW9uKTsKICAgICBtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyLmluaXRMYXRlcigK
ICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEdldHRlclNldHRlcj4mIGluaXQpIHsKQEAg
LTQ5Miw3ICs0OTIsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBt
X2Z1bmN0aW9uUHJvdG90eXBlLT5pbml0UmVzdHJpY3RlZFByb3BlcnRpZXMoZXhlYywgdGhpcyk7
CiAKICAgICBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXIuc2V0KHZtLCB0aGlzLCBHZXR0ZXJTZXR0ZXI6
OmNyZWF0ZSh2bSwgdGhpcykpOwotICAgIG1fc3BlY2llc0dldHRlclNldHRlci0+c2V0R2V0dGVy
KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9wZXJhdGlvbnNTcGVjaWVz
R2V0dGVyQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpKTsKKyAgICBtX3NwZWNpZXNHZXR0ZXJTZXR0
ZXItPnNldEdldHRlcih2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPcGVy
YXRpb25zU3BlY2llc0dldHRlckNvZGVHZW5lcmF0b3Iodm0pLnZhbHVlKCksIHRoaXMpKTsKIAog
ICAgIG1fdHlwZWRBcnJheVByb3RvLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRp
YWxpemVyPEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU+JiBpbml0KSB7CkBAIC01MTQsNyArNTE0
LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgIFtdIChMYXp5
Q2xhc3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVyJiBpbml0KSB7IFwKICAgICAgICAgICAgIGluaXQu
c2V0UHJvdG90eXBlKEpTICMjIHR5cGUgIyMgQXJyYXlQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZt
LCBpbml0Lmdsb2JhbCwgSlMgIyMgdHlwZSAjIyBBcnJheVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBpbml0Lmdsb2JhbC0+bV90eXBlZEFycmF5UHJvdG8u
Z2V0KGluaXQuZ2xvYmFsKSkpKTsgXAogICAgICAgICAgICAgaW5pdC5zZXRTdHJ1Y3R1cmUoSlMg
IyMgdHlwZSAjIyBBcnJheTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBp
bml0LnByb3RvdHlwZSkpOyBcCi0gICAgICAgICAgICBpbml0LnNldENvbnN0cnVjdG9yKEpTICMj
IHR5cGUgIyMgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBK
UyAjIyB0eXBlICMjIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBp
bml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm1fdHlwZWRBcnJheVN1cGVyQ29uc3RydWN0b3IuZ2V0
KGluaXQuZ2xvYmFsKSksIGluaXQucHJvdG90eXBlLCBBU0NJSUxpdGVyYWwoI3R5cGUgIkFycmF5
IiksIHR5cGVkQXJyYXlDb25zdHJ1Y3RvckFsbG9jYXRlICMjIHR5cGUgIyMgQXJyYXlDb2RlR2Vu
ZXJhdG9yKGluaXQudm0pKSk7IFwKKyAgICAgICAgICAgIGluaXQuc2V0Q29uc3RydWN0b3IoSlMg
IyMgdHlwZSAjIyBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5nbG9iYWws
IEpTICMjIHR5cGUgIyMgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0s
IGluaXQuZ2xvYmFsLCBpbml0Lmdsb2JhbC0+bV90eXBlZEFycmF5U3VwZXJDb25zdHJ1Y3Rvci5n
ZXQoaW5pdC5nbG9iYWwpKSwgaW5pdC5wcm90b3R5cGUsIEFTQ0lJTGl0ZXJhbCgjdHlwZSAiQXJy
YXkiKSwgdHlwZWRBcnJheUNvbnN0cnVjdG9yQWxsb2NhdGUgIyMgdHlwZSAjIyBBcnJheUNvZGVH
ZW5lcmF0b3IoaW5pdC52bSkudmFsdWUoKSkpOyBcCiAgICAgICAgICAgICBpbml0Lmdsb2JhbC0+
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oaW5pdC52bSwgaW5pdC52bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS50eXBlICMjIEFycmF5UHJpdmF0ZU5hbWUoKSwgaW5pdC5jb25zdHJ1
Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkp
OyBcCiAgICAgICAgIH0pOwogICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5H
X0RBVEFfVklFVyhJTklUX1RZUEVEX0FSUkFZX0xBVEVSKQpAQCAtODM2LDcgKzgzNiw3IEBAIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBs
b3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgSlNPYmplY3QqIHJlZ0V4cFN5bWJvbFJlcGxhY2Ug
PSBhc09iamVjdChtX3JlZ0V4cFByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5yZXBsYWNlU3ltYm9sKS5hc0NlbGwoKSk7CiAgICAgbV9yZWdFeHBQcm90b1N5bWJvbFJl
cGxhY2Uuc2V0KHZtLCB0aGlzLCByZWdFeHBTeW1ib2xSZXBsYWNlKTsKIAotI2RlZmluZSBDUkVB
VEVfUFJJVkFURV9HTE9CQUxfRlVOQ1RJT04obmFtZSwgY29kZSkgSlNGdW5jdGlvbiogbmFtZSAj
IyBQcml2YXRlRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGUgIyMgQ29kZUdl
bmVyYXRvcih2bSksIHRoaXMpOworI2RlZmluZSBDUkVBVEVfUFJJVkFURV9HTE9CQUxfRlVOQ1RJ
T04obmFtZSwgY29kZSkgSlNGdW5jdGlvbiogbmFtZSAjIyBQcml2YXRlRnVuY3Rpb24gPSBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIGNvZGUgIyMgQ29kZUdlbmVyYXRvcih2bSkudmFsdWUoKSwgdGhp
cyk7CiAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9QUklWQVRFX0dMT0JBTF9OQU1F
KENSRUFURV9QUklWQVRFX0dMT0JBTF9GVU5DVElPTikKICN1bmRlZiBDUkVBVEVfUFJJVkFURV9H
TE9CQUxfRlVOQ1RJT04KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCmluZGV4IDQyYzg4OGU2YzQ5NGU2ZDQ5NzNlNmFhYzM2OTMxYzgzYmM5YWM5MGQuLjZhZDZh
MzA1YWVkMjlkM2E3ZjU5OGJmYzJiZDkwMDYzMGE5MTVhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTIwMjksMTIgKzIwMjksMTcgQEAgYm9vbCBK
U09iamVjdDo6Z2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgZG91YmxlJiBudW1i
ZXIsIEpTVmFsdWUmIHJlc3UKICAgICByZXR1cm4gIXJlc3VsdC5pc1N0cmluZygpOwogfQogCi1i
b29sIEpTT2JqZWN0OjpnZXRPd25TdGF0aWNQcm9wZXJ0eVNsb3QoVk0mIHZtLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTT2JqZWN0OjpnZXRP
d25TdGF0aWNQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgZm9yIChhdXRv
KiBpbmZvID0gY2xhc3NJbmZvKHZtKTsgaW5mbzsgaW5mbyA9IGluZm8tPnBhcmVudENsYXNzKSB7
CiAgICAgICAgIGlmIChhdXRvKiB0YWJsZSA9IGluZm8tPnN0YXRpY1Byb3BIYXNoVGFibGUpIHsK
LSAgICAgICAgICAgIGlmIChnZXRTdGF0aWNQcm9wZXJ0eVNsb3RGcm9tVGFibGUodm0sIHRhYmxl
LT5jbGFzc0ZvclRoaXMsICp0YWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICAg
ICAgICAgIGlmIChnZXRTdGF0aWNQcm9wZXJ0eVNsb3RGcm9tVGFibGUoZXhlYywgdGFibGUtPmNs
YXNzRm9yVGhpcywgKnRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7CisgICAgICAg
ICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOwogICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBm
YWxzZTsKQEAgLTIzMjAsNiArMjMyNSw3IEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5QWxsU3RhdGlj
UHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgQVNTRVJUKCFzdGF0aWNQcm9wZXJ0
aWVzUmVpZmllZCgpKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIElmIHRoaXMgb2JqZWN0J3MgQ2xh
c3NJbmZvIGhhcyBubyBzdGF0aWMgcHJvcGVydGllcywgdGhlbiBub3RoaW5nIHRvIHJlaWZ5IQog
ICAgIC8vIFdlIGNhbiBzYWZlbHkgc2V0IHRoZSBmbGFnIHRvIGF2b2lkIHRoZSBleHBlbnNpdmUg
Y2hlY2sgYWdhaW4gaW4gdGhlIGZ1dHVyZS4KQEAgLTIzNDAsOCArMjM0NiwxMCBAQCB2b2lkIEpT
T2JqZWN0OjpyZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjKQogICAgICAg
ICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICAgICAgICAgIGF1dG8ga2V5ID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sIHZhbHVlLm1fa2V5KTsKICAgICAgICAgICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCA9IGdldERpcmVjdE9mZnNldCh2bSwga2V5LCBhdHRyaWJ1dGVzKTsKLSAg
ICAgICAgICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQotICAgICAgICAgICAgICAgIHJl
aWZ5U3RhdGljUHJvcGVydHkodm0sIGhhc2hUYWJsZS0+Y2xhc3NGb3JUaGlzLCBrZXksIHZhbHVl
LCAqdGhpcyk7CisgICAgICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgeworICAg
ICAgICAgICAgICAgIHJlaWZ5U3RhdGljUHJvcGVydHkodm0sIGV4ZWMsIGhhc2hUYWJsZS0+Y2xh
c3NGb3JUaGlzLCBrZXksIHZhbHVlLCAqdGhpcyk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggYzJlYjhl
NjkzNjQyOWY0ZjZhY2VmNzc3NTRiZjYzNmQzM2VhMzY3NC4uMDI0NWU1YTZlZTgwYzhhNWQ3OTMx
MzcwODY2NTIyMGJkMzJmNjExNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oCkBAIC05NCw3ICs5NCw3IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7
CiAgICAgZnJpZW5kIGNsYXNzIEpTQ2VsbDsKICAgICBmcmllbmQgY2xhc3MgSlNGaW5hbE9iamVj
dDsKICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
ZnJpZW5kIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoVk0mLCBjb25zdCBIYXNoVGFibGVW
YWx1ZSosIEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBmcmllbmQgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3Rh
dGUqLCBjb25zdCBIYXNoVGFibGVWYWx1ZSosIEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKIAogICAgIGVudW0gUHV0TW9kZSB7CiAgICAgICAgIFB1dE1vZGVQdXQsCkBA
IC0xMDIyLDExICsxMDIyLDExIEBAIHByaXZhdGU6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgTkVW
RVJfSU5MSU5FIGJvb2wgcHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgYm9vbCBnZXROb25JbmRleFByb3BlcnR5
U2xvdChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIGJvb2wg
Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QoVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOworICAgIGJvb2wgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QoRXhl
Y1N0YXRlKiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90
JiwgSlNDZWxsKiwgdW5zaWduZWQsIFByb3BlcnR5T2Zmc2V0KTsKICAgICB2b2lkIGZpbGxDdXN0
b21HZXR0ZXJQcm9wZXJ0eVNsb3QoVk0mLCBQcm9wZXJ0eVNsb3QmLCBDdXN0b21HZXR0ZXJTZXR0
ZXIqLCB1bnNpZ25lZCwgU3RydWN0dXJlKik7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBib29s
IGdldE93blN0YXRpY1Byb3BlcnR5U2xvdChWTSYsIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRPd25TdGF0aWNQcm9wZXJ0eVNsb3Qo
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdHJ1Y3QgUHJv
cGVydHlIYXNoRW50cnkgewogICAgICAgICBjb25zdCBIYXNoVGFibGUqIHRhYmxlOwogICAgICAg
ICBjb25zdCBIYXNoVGFibGVWYWx1ZSogdmFsdWU7CkBAIC0xMzEzLDE0ICsxMzEzLDE1IEBAIGlu
bGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRQcm90b3R5cGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4
ZWMpCiAKIC8vIEl0IGlzIHNhZmUgdG8gY2FsbCB0aGlzIG1ldGhvZCB3aXRoIGEgUHJvcGVydHlO
YW1lIHRoYXQgaXMgYWN0dWFsbHkgYW4gaW5kZXgsCiAvLyBidXQgaWYgc28gd2lsbCBhbHdheXMg
cmV0dXJuIGZhbHNlIChkb2Vzbid0IHNlYXJjaCBpbmRleCBzdG9yYWdlKS4KLUFMV0FZU19JTkxJ
TkUgYm9vbCBKU09iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQorQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3Bl
cnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwogICAg
IGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7CiAgICAgICAgIGlmICghVHlwZUluZm86Omhh
c1N0YXRpY1Byb3BlcnR5VGFibGUoaW5saW5lVHlwZUZsYWdzKCkpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gZ2V0T3duU3RhdGljUHJvcGVydHlTbG90KHZtLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICByZXR1cm4gZ2V0T3duU3RhdGljUHJvcGVydHlT
bG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIAogICAgIC8vIGdldFBy
b3BlcnR5U2xvdCByZWxpZXMgb24gdGhpcyBtZXRob2QgbmV2ZXIgcmV0dXJuaW5nIGluZGV4IHBy
b3BlcnRpZXMhCkBAIC0xMzcwLDE5ICsxMzcxLDI0IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU09i
amVjdDo6ZmlsbEN1c3RvbUdldHRlclByb3BlcnR5U2xvdChWTSYgdm0sIFByb3BlcnR5U2xvdCYK
IEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gb2JqZWN0LT5zdHJ1Y3R1cmUodm0pOwotICAgIGlmIChvYmplY3QtPmdldE93bk5vbkluZGV4
UHJvcGVydHlTbG90KHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgaWYg
KG9iamVjdC0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QoZXhlYywgc3RydWN0dXJlLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpKSB7CisgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2Vw
dGlvbigpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5k
ZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiBnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwgZXhlYywgaW5kZXgudmFsdWUoKSwgc2xvdCk7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCiAvLyBJdCBtYXkgc2VlbSBjcmF6eSB0byBpbmxpbmUgYSBmdW5j
dGlvbiB0aGlzIGxhcmdlIGJ1dCBpdCBtYWtlcyBhIGJpZyBkaWZmZXJlbmNlCi0vLyBzaW5jZSB0
aGlzIGlzIGZ1bmN0aW9uIHZlcnkgaG90IGluIHZhcmlhYmxlIGxvb2t1cAorLy8gc2luY2UgdGhp
cyBmdW5jdGlvbiBpcyB2ZXJ5IGhvdCBpbiB2YXJpYWJsZSBsb29rdXAKIEFMV0FZU19JTkxJTkUg
Ym9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IGF1dG8mIHN0cnVjdHVyZUlEVGFibGUgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKTsKICAg
ICBKU09iamVjdCogb2JqZWN0ID0gdGhpczsKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtMTM5NSwx
MiArMTQwMSwxNiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5U2xv
dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZQogICAgICAgICAgICAgICAgIHJl
dHVybiBnZXRQcm9wZXJ0eVNsb3QoZXhlYywgaW5kZXgudmFsdWUoKSwgc2xvdCk7CiAgICAgICAg
ICAgICAvLyBTYWZlIHRvIGNvbnRpbnVlIHNlYXJjaGluZyBmcm9tIGN1cnJlbnQgcG9zaXRpb247
IGNhbGwgZ2V0Tm9uSW5kZXhQcm9wZXJ0eVNsb3QgdG8gYXZvaWQKICAgICAgICAgICAgIC8vIHBh
cnNpbmcgdGhlIGludCBhZ2Fpbi4KKyAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICAg
ICAgICAgIHJldHVybiBvYmplY3QtPmdldE5vbkluZGV4UHJvcGVydHlTbG90KGV4ZWMsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKG9iamVjdC0+dHlwZSgp
ICE9IFByb3h5T2JqZWN0VHlwZSk7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3Ry
dWN0dXJlSURUYWJsZS5nZXQob2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKLSAgICAgICAgaWYgKG9i
amVjdC0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3Qodm0sIHN0cnVjdHVyZSwgcHJvcGVydHlO
YW1lLCBzbG90KSkKKyAgICAgICAgaWYgKG9iamVjdC0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNs
b3QoZXhlYywgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7CisgICAgICAgICAgICBF
WENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxz
ZSk7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgbG9vayBsaWtlIGl0J3MgZm9sbG93
aW5nIHRoZSBzcGVjaWZpY2F0aW9uOgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNTcyCiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gc3Ry
dWN0dXJlLT5zdG9yZWRQcm90b3R5cGUob2JqZWN0KTsKQEAgLTE2MDEsNyArMTYxMSw3IEBAIEpT
X0VYUE9SVF9QUklWQVRFIE5FVkVSX0lOTElORSBib29sIG9yZGluYXJ5U2V0U2xvdyhFeGVjU3Rh
dGUqLCBKU09iamVjdCosIFByb3BlCiAKICNkZWZpbmUgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lU
SE9VVF9UUkFOU0lUSU9OKGpzTmFtZSwgZ2VuZXJhdG9yTmFtZSwgYXR0cmlidXRlcykgXAogICAg
IHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKFwKLSAgICAgICAgdm0s
IGdsb2JhbE9iamVjdCwgbWFrZUlkZW50aWZpZXIodm0sIChqc05hbWUpKSwgKGdlbmVyYXRvck5h
bWUpKHZtKSwgKGF0dHJpYnV0ZXMpKQorICAgICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBtYWtlSWRl
bnRpZmllcih2bSwgKGpzTmFtZSkpLCAoZ2VuZXJhdG9yTmFtZSkodm0pLnZhbHVlKCksIChhdHRy
aWJ1dGVzKSkKIAogLy8gSGVscGVyIGZvciBkZWZpbmluZyBuYXRpdmUgZ2V0dGVycyBvbiBwcm9w
ZXJ0aWVzLgogI2RlZmluZSBKU0NfTkFUSVZFX0lOVFJJTlNJQ19HRVRURVIoanNOYW1lLCBjcHBO
YW1lLCBhdHRyaWJ1dGVzLCBpbnRyaW5zaWMpICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCmluZGV4IDVlMjcwMWYxN2E0MzNlMzJkMWJjNmU5
Yzg3YTRhNTU4OWQ0ZjNmOGYuLjNmMDlhODFiMDVmNjA3OWRiNzJmYzYzYzcyZThkNTllOWY1ZDY5
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5l
cy5oCkBAIC0xNDAsOCArMTQwLDExIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0
Tm9uSW5kZXhQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiAgICAgd2hp
bGUgKHRydWUpIHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVJRFRh
YmxlLmdldChvYmplY3QtPnN0cnVjdHVyZUlEKCkpOwogICAgICAgICBpZiAoTElLRUxZKCFUeXBl
SW5mbzo6b3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KG9iamVjdC0+aW5saW5lVHlwZUZsYWdz
KCkpKSkgewotICAgICAgICAgICAgaWYgKG9iamVjdC0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNs
b3Qodm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICAgICAgICAgIGlmIChv
YmplY3QtPmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KGV4ZWMsIHN0cnVjdHVyZSwgcHJvcGVy
dHlOYW1lLCBzbG90KSkgeworICAgICAgICAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3Bl
LmV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIGJvb2wgaGFzU2xvdCA9IHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCktPm1ldGhvZFRhYmxlLmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBm
YWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3Bl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCmluZGV4IDNm
N2YzZjE0OTdkMGFhMmM5ZTUzNDRlN2EzYThlZjQwYjE2MGY4MGMuLjBhOTlkODBmOWIxNGI2N2Ew
N2U3YzAyMjgxMDlhZTA4NmM3OTAzM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2NvcGUuY3BwCkBAIC0xNTYsNiArMTU2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGFic3Ry
YWN0QWNjZXNzKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIGNvbnN0IElkZW50aWYK
IAogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxPYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwogICAgICAgICBib29sIGhhc093blByb3Bl
cnR5ID0gZ2xvYmFsT2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBleGVj
LCBpZGVudCwgc2xvdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgICAgICBpZiAoIWhhc093blByb3BlcnR5KSB7CiAgICAgICAgICAgICBvcCA9
IFJlc29sdmVPcChtYWtlVHlwZShVbnJlc29sdmVkUHJvcGVydHksIG5lZWRzVmFySW5qZWN0aW9u
Q2hlY2tzKSwgMCwgMCwgMCwgMCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZS5jcHAKaW5kZXggNzViMGMxMWYzNmUyNmE3YmE0OTM0MTU4NTUyNjM4YjgxZTE1
ZjFlMi4uODdmZGEzYWY4ZDkzMDM3ZWFjZDJkYTI2ODdlYTI1MDQwNzk2NmRlZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZS5jcHAKQEAgLTMzMCw3ICszMzAsNyBAQCB2b2lkIEpTVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
agogICAgIHRvU3RyaW5nVGFnQWNjZXNzb3ItPnNldEdldHRlcih2bSwgZ2xvYmFsT2JqZWN0LCB0
b1N0cmluZ1RhZ0Z1bmN0aW9uKTsKICAgICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwgdG9TdHJpbmdUYWdBY2Nlc3Nvciwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKIAotICAgIEpTRnVuY3Rpb24qIHZhbHVl
c0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0eXBlZEFycmF5UHJvdG90eXBlVmFs
dWVzQ29kZUdlbmVyYXRvcih2bSksIGdsb2JhbE9iamVjdCk7CisgICAgSlNGdW5jdGlvbiogdmFs
dWVzRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHR5cGVkQXJyYXlQcm90b3R5cGVW
YWx1ZXNDb2RlR2VuZXJhdG9yKHZtKS52YWx1ZSgpLCBnbG9iYWxPYmplY3QpOwogCiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLnZhbHVlc1B1YmxpY05hbWUoKSwgdmFsdWVzRnVuY3Rpb24sIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIHZhbHVlc0Z1
bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAppbmRleCA5NjZjNzFl
YjEwYThhODQ4NDdlODdjYjYxMjNlNDA4NzUxNzhiZjA2Li44ZWFjMGY5NGM1NzYxNDgxYTA3ZjMw
YjJiMmE1NWM2YzQ4OTU3MmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Mb29rdXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1
cC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgdm9pZCByZWlmeVN0YXRpY0FjY2Vzc29yKFZNJiB2bSwg
Y29uc3QgSGFzaFRhYmxlVmFsdWUmIHZhbHVlLCBKU09iamVjdCYgdGhpc09iamUKICAgICBpZiAo
dmFsdWUuYWNjZXNzb3JHZXR0ZXIoKSkgewogICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9
IG51bGxwdHI7CiAgICAgICAgIGlmICh2YWx1ZS5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJp
YnV0ZTo6QnVpbHRpbikKLSAgICAgICAgICAgIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCB2YWx1ZS5idWlsdGluQWNjZXNzb3JHZXR0ZXJHZW5lcmF0b3IoKSh2bSksIGdsb2JhbE9i
amVjdCk7CisgICAgICAgICAgICBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdmFs
dWUuYnVpbHRpbkFjY2Vzc29yR2V0dGVyR2VuZXJhdG9yKCkodm0pLnZhbHVlKCksIGdsb2JhbE9i
amVjdCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgU3RyaW5nIGdldHRlck5hbWUgPSB0
cnlNYWtlU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiZ2V0ICIpLCBTdHJpbmcoKnByb3BlcnR5TmFtZS5w
dWJsaWNOYW1lKCkpKTsKICAgICAgICAgICAgIGlmICghZ2V0dGVyTmFtZSkKQEAgLTQ1LDggKzQ1
LDEwIEBAIHZvaWQgcmVpZnlTdGF0aWNBY2Nlc3NvcihWTSYgdm0sIGNvbnN0IEhhc2hUYWJsZVZh
bHVlJiB2YWx1ZSwgSlNPYmplY3QmIHRoaXNPYmplCiAgICAgdGhpc09iamVjdC5wdXREaXJlY3RO
b25JbmRleEFjY2Vzc29yKHZtLCBwcm9wZXJ0eU5hbWUsIGFjY2Vzc29yLCBhdHRyaWJ1dGVzRm9y
U3RydWN0dXJlKHZhbHVlLmF0dHJpYnV0ZXMoKSkpOwogfQogCi1ib29sIHNldFVwU3RhdGljRnVu
Y3Rpb25TbG90KFZNJiB2bSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGNvbnN0IEhhc2hU
YWJsZVZhbHVlKiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNs
b3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgSGFz
aFRhYmxlVmFsdWUqIGVudHJ5LCBKU09iamVjdCogdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEFTU0VS
VCh0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSk7CiAgICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1
dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbk9yRnVuY3Rpb25PckFjY2Vzc29yT3JM
YXp5UHJvcGVydHkpOwogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CkBAIC01OSw3ICs2MSw4IEBA
IGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoVk0mIHZtLCBjb25zdCBDbGFzc0luZm8qIGNs
YXNzSW5mbywgY29uc3QgSGFzaFRhYmxlCiAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5zdGF0aWNQ
cm9wZXJ0aWVzUmVpZmllZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAg
IHJlaWZ5U3RhdGljUHJvcGVydHkodm0sIGNsYXNzSW5mbywgcHJvcGVydHlOYW1lLCAqZW50cnks
ICp0aGlzT2JqZWN0KTsKKyAgICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgZXhlYywgY2xh
c3NJbmZvLCBwcm9wZXJ0eU5hbWUsICplbnRyeSwgKnRoaXNPYmplY3QpOworICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKICAgICAgICAgb2Zmc2V0ID0gdGhpc09i
amVjdC0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwogICAg
ICAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Mb29rdXAuaAppbmRleCBiZmVlNTFlMGIxYWNiNDQ2YTM1MDgyYjQ1YmYwMWU5MzhhNjg4
YWY3Li44NWZiZTFkYmZhYTE2YjliZTg3YzY1NmI4YWY2YmM0ZDY1N2EzNjE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtMzEsMTAgKzMxLDEyIEBACiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAi
TGF6eVByb3BlcnR5LmgiCisjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIKICNpbmNsdWRlICJQcm9w
ZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJQdXRQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJUeXBl
RXJyb3IuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9FeHBl
Y3RlZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDcsNyArNDksNyBAQCBzdHJ1Y3QgQ29t
cGFjdEhhc2hJbmRleCB7CiAvLyBpZS4gdHlwZWRlZiBKU1ZhbHVlICgqR2V0RnVuY3Rpb24pKEV4
ZWNTdGF0ZSosIEpTT2JqZWN0KiBiYXNlT2JqZWN0KQogdHlwZWRlZiBQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYyBHZXRGdW5jdGlvbjsKIHR5cGVkZWYgUHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmMgUHV0RnVuY3Rpb247Ci10eXBlZGVmIEZ1bmN0aW9uRXhlY3V0YWJsZSogKCpCdWlsdGlu
R2VuZXJhdG9yKShWTSYpOwordHlwZWRlZiBFeHBlY3RlZDxGdW5jdGlvbkV4ZWN1dGFibGUqLCBQ
YXJzZXJFcnJvcj4gKCpCdWlsdGluR2VuZXJhdG9yKShWTSYpOwogdHlwZWRlZiBKU1ZhbHVlICgq
TGF6eVByb3BlcnR5Q2FsbGJhY2spKFZNJiwgSlNPYmplY3QqKTsKIAogLy8gSGFzaCB0YWJsZSBn
ZW5lcmF0ZWQgYnkgdGhlIGNyZWF0ZV9oYXNoX3RhYmxlIHNjcmlwdC4KQEAgLTIwMyw3ICsyMDUs
NyBAQCBzdHJ1Y3QgSGFzaFRhYmxlIHsKICAgICB9CiB9OwogCi1KU19FWFBPUlRfUFJJVkFURSBi
b29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KFZNJiwgY29uc3QgQ2xhc3NJbmZvKiwgY29uc3Qg
SGFzaFRhYmxlVmFsdWUqLCBKU09iamVjdCogdGhpc09iamVjdCwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKK0pTX0VYUE9SVF9QUklWQVRFIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNs
b3QoRXhlY1N0YXRlKiwgY29uc3QgQ2xhc3NJbmZvKiwgY29uc3QgSGFzaFRhYmxlVmFsdWUqLCBK
U09iamVjdCogdGhpc09iamVjdCwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgcmVpZnlTdGF0aWNBY2Nlc3NvcihWTSYsIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlJiwgSlNPYmplY3QmIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSk7CiAKIGlubGluZSBC
dWlsdGluR2VuZXJhdG9yIEhhc2hUYWJsZVZhbHVlOjpidWlsdGluQWNjZXNzb3JHZXR0ZXJHZW5l
cmF0b3IoKSBjb25zdApAQCAtMjIwLDcgKzIyMiw3IEBAIGlubGluZSBCdWlsdGluR2VuZXJhdG9y
IEhhc2hUYWJsZVZhbHVlOjpidWlsdGluQWNjZXNzb3JTZXR0ZXJHZW5lcmF0b3IoKSBjb25zdAog
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEJ1aWx0aW5HZW5lcmF0b3I+KG1fdmFsdWVzLnZh
bHVlMik7CiB9CiAKLWlubGluZSBib29sIGdldFN0YXRpY1Byb3BlcnR5U2xvdEZyb21UYWJsZShW
TSYgdm0sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBjb25zdCBIYXNoVGFibGUmIHRhYmxl
LCBKU09iamVjdCogdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQoraW5saW5lIGJvb2wgZ2V0U3RhdGljUHJvcGVydHlTbG90RnJvbVRhYmxl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGNvbnN0IEhhc2hU
YWJsZSYgdGFibGUsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgaWYgKHRoaXNPYmplY3QtPnN0YXRpY1By
b3BlcnRpZXNSZWlmaWVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMCw3ICsyMzIs
NyBAQCBpbmxpbmUgYm9vbCBnZXRTdGF0aWNQcm9wZXJ0eVNsb3RGcm9tVGFibGUoVk0mIHZtLCBj
b25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgYwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpCdWlsdGluT3JG
dW5jdGlvbk9yQWNjZXNzb3JPckxhenlQcm9wZXJ0eSkKLSAgICAgICAgcmV0dXJuIHNldFVwU3Rh
dGljRnVuY3Rpb25TbG90KHZtLCBjbGFzc0luZm8sIGVudHJ5LCB0aGlzT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOworICAgICAgICByZXR1cm4gc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZXhl
YywgY2xhc3NJbmZvLCBlbnRyeSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIAog
ICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50
SW50ZWdlcikgewogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIGF0dHJpYnV0ZXNG
b3JTdHJ1Y3R1cmUoZW50cnktPmF0dHJpYnV0ZXMoKSksIGpzTnVtYmVyKGVudHJ5LT5jb25zdGFu
dEludGVnZXIoKSkpOwpAQCAtMzE5LDEzICszMjEsMzMgQEAgaW5saW5lIGJvb2wgbG9va3VwUHV0
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGJh
c2UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW5saW5lIHZvaWQgcmVpZnlTdGF0aWNQcm9wZXJ0
eShWTSYgdm0sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBjb25zdCBQcm9wZXJ0eU5hbWUm
IHByb3BlcnR5TmFtZSwgY29uc3QgSGFzaFRhYmxlVmFsdWUmIHZhbHVlLCBKU09iamVjdCYgdGhp
c09iaikKK2lubGluZSB2b2lkIHJlaWZ5U3RhdGljUHJvcGVydHkoVk0mIHZtLCBFeGVjU3RhdGUq
IGV4ZWNJZkF2YWlsYWJsZSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGNvbnN0IFByb3Bl
cnR5TmFtZSYgcHJvcGVydHlOYW1lLCBjb25zdCBIYXNoVGFibGVWYWx1ZSYgdmFsdWUsIEpTT2Jq
ZWN0JiB0aGlzT2JqKQogeworICAgIEFTU0VSVChleGVjSWZBdmFpbGFibGUgPT0gbnVsbHB0ciB8
fCAmdm0gPT0gJihleGVjSWZBdmFpbGFibGUtPnZtKCkpKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAodmFsdWUuYXR0cmlidXRlcygpICYgUHJv
cGVydHlBdHRyaWJ1dGU6OkJ1aWx0aW4pIHsKICAgICAgICAgaWYgKHZhbHVlLmF0dHJpYnV0ZXMo
KSAmIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvcikKICAgICAgICAgICAgIHJlaWZ5U3RhdGlj
QWNjZXNzb3Iodm0sIHZhbHVlLCB0aGlzT2JqLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB0aGlzT2JqLnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2bSwgdGhpc09i
ai5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCB2YWx1ZS5idWlsdGluR2VuZXJhdG9yKCko
dm0pLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHZhbHVlLmF0dHJpYnV0ZXMoKSkpOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChFeHBlY3RlZDxGdW5jdGlvbkV4ZWN1dGFibGUqLCBQ
YXJzZXJFcnJvcj4gZiA9IHZhbHVlLmJ1aWx0aW5HZW5lcmF0b3IoKSh2bSkpCisgICAgICAgICAg
ICAgICAgdGhpc09iai5wdXREaXJlY3RCdWlsdGluRnVuY3Rpb24odm0sIHRoaXNPYmouZ2xvYmFs
T2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZi52YWx1ZSgpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJl
KHZhbHVlLmF0dHJpYnV0ZXMoKSkpOworICAgICAgICAgICAgZWxzZSBpZiAoZXhlY0lmQXZhaWxh
YmxlKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChmLmVycm9yKCkudHlwZSgpKSB7CisgICAg
ICAgICAgICAgICAgY2FzZSBQYXJzZXJFcnJvcjo6U3RhY2tPdmVyZmxvdzoKKyAgICAgICAgICAg
ICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlY0lmQXZhaWxhYmxlLCBzY29wZSk7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBjYXNlIFBhcnNl
ckVycm9yOjpPdXRPZk1lbW9yeToKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWNJZkF2YWlsYWJsZSwgc2NvcGUpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiRmF0YWwgcGFyc2VyIGVycm9yIChw
cm9iYWJseSBhIHN0YWNrIG92ZXJmbG93KSwgYW5kIG5vIEV4ZWNTdGF0ZSBhdmFpbGFibGUgZm9y
IHRocm93aW5nIGEgSlMgZXhjZXB0aW9uIik7CisgICAgICAgICAgICAgICAgQ1JBU0goKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00MDAs
NyArNDIyLDcgQEAgaW5saW5lIHZvaWQgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKFZNJiB2bSwgY29u
c3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGNvbnN0IEhhc2gKICAgICAgICAgaWYgKCF2YWx1ZS5t
X2tleSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBhdXRvIGtleSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4odmFsdWUu
bV9rZXkpLCBzdHJsZW4odmFsdWUubV9rZXkpKTsKLSAgICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0
eSh2bSwgY2xhc3NJbmZvLCBrZXksIHZhbHVlLCB0aGlzT2JqKTsKKyAgICAgICAgcmVpZnlTdGF0
aWNQcm9wZXJ0eSh2bSwgbnVsbHB0ciwgY2xhc3NJbmZvLCBrZXksIHZhbHVlLCB0aGlzT2JqKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
cFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5
cGUuY3BwCmluZGV4IDUzNTY4YjdhM2FhZTRiMTI2Y2NlMzM5ZDMyZDA0NzBlZWE3NmExODMuLmZl
MmI2YmVlMTMyMGNiMjU1N2E3ZGU1MzJmZmQ5ODA0ZGIzMjVkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2
b2lkIE1hcFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRQcml2YXRlTmFt
ZSgpLCBtYXBQcm90b0Z1bmNHZXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCAxLCBKU01hcEdldEludHJpbnNpYyk7CiAgICAgSlNDX05BVElWRV9J
TlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLnNldFByaXZhdGVOYW1lKCksIG1hcFByb3RvRnVuY1NldCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIsIEpTTWFwU2V0SW50
cmluc2ljKTsKIAotICAgIEpTRnVuY3Rpb24qIGVudHJpZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIG1hcFByb3RvdHlwZUVudHJpZXNDb2RlR2VuZXJhdG9yKHZtKSwgZ2xvYmFsT2JqZWN0KTsK
KyAgICBKU0Z1bmN0aW9uKiBlbnRyaWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBtYXBQcm90
b3R5cGVFbnRyaWVzQ29kZUdlbmVyYXRvcih2bSkudmFsdWUoKSwgZ2xvYmFsT2JqZWN0KTsKICAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSwgZW50cmllcywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZW50cmllcywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmlu
Z1RhZ1N5bWJvbCwganNTdHJpbmcoJnZtLCAiTWFwIiksIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAppbmRleCAyOTM0Mzk2MDg3ZTY4YmYzOGM5
MTg3MzE4MDRmNmY2ZTcwYjA3ZDZjLi5mMmYwNWUzZmYwZmU0YzNhYjlmMmNiNmJlMDUyOWE0NDBj
MmZkODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90
b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlw
ZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0lO
VFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuaGFzUHJpdmF0ZU5hbWUoKSwgc2V0UHJvdG9GdW5jSGFzLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgSlNTZXRIYXNJbnRy
aW5zaWMpOwogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJ
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hZGRQcml2YXRlTmFtZSgpLCBz
ZXRQcm90b0Z1bmNBZGQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCAxLCBKU1NldEFkZEludHJpbnNpYyk7CiAKLSAgICBKU0Z1bmN0aW9uKiB2YWx1
ZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHNldFByb3RvdHlwZVZhbHVlc0NvZGVHZW5lcmF0
b3Iodm0pLCBnbG9iYWxPYmplY3QpOworICAgIEpTRnVuY3Rpb24qIHZhbHVlcyA9IEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgc2V0UHJvdG90eXBlVmFsdWVzQ29kZUdlbmVyYXRvcih2bSkudmFsdWUo
KSwgZ2xvYmFsT2JqZWN0KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudmFsdWVzUHVibGljTmFtZSgpLCB2YWx1ZXMs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkua2V5c1B1YmxpY05hbWUoKSwgdmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCB2YWx1ZXMsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCA1YWUwYjA4MjUzNzRhNDEx
MTlkNjEwM2Y0YTUxZGJhYjhiMWQ3MzM4Li5hMWQ2ZGY4OTkxYjJmNGI0NzQyZTJkNDZiOGU5MjE0
NjgzYzc2NzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xs
YXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3Bw
CkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNEb2xs
YXJWTS5oIgogCi0jaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmgiCisjaW5jbHVk
ZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiRE9NSklUR2V0dGVyU2V0
dGVyLmgiCkBAIC0xNTIyLDkgKzE1MjIsOCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUJ1aWx0aW4oRXhlY1N0YXRlKiBleGVjKQogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgY29uc3QgU291
cmNlQ29kZSYgc291cmNlID0gbWFrZVNvdXJjZShmdW5jdGlvblRleHQsIHsgfSk7Ci0gICAgSlNG
dW5jdGlvbiogZnVuYyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgY3JlYXRlQnVpbHRpbkV4ZWN1
dGFibGUodm0sIHNvdXJjZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJmb28iKSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpLT5s
aW5rKHZtLCBzb3VyY2UpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwotCi0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShmdW5jKTsKKyAgICBhdXRvIHVubGlua2VkID0gQnVpbHRpbkV4
ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlT3JDcmFzaCh2bSwgc291cmNlLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgImZvbyIpLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIENvbnN0cnVj
dEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHVubGlua2VkLT5saW5rKHZtLCBzb3VyY2UpLCBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVSb290KEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3Ry
dWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Q
cml2YXRlQ29uc3RydWN0b3JzLmNwcAppbmRleCBjYTk3ZTk2MTFkMDMyMmI2NTJkY2NlNGY2ZWY5
OGU0OGEyZDczMzZkLi4xNGMyYmNkZTY5MjU3YmFjMjQxNmRiZTdhM2MzYWQ2YmQzYmRiYjAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJp
dmF0ZUNvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNS
ZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwCkBAIC0xMjQsMjcgKzEyNCwyNyBA
QCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbUJZT0JS
ZXF1ZXN0UHJpdmF0ZUNvbnN0cnVjdG9yOgogCiB0ZW1wbGF0ZTw+IEZ1bmN0aW9uRXhlY3V0YWJs
ZSogSlNCdWlsdGluUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyUHJpdmF0ZUNvbnN0cnVjdG9y
Ojppbml0aWFsaXplRXhlY3V0YWJsZShKU0M6OlZNJiB2bSkKIHsKLSAgICByZXR1cm4gcmVhZGFi
bGVTdHJlYW1JbnRlcm5hbHNQcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtRGVmYXVsdFJl
YWRlckNvZGVHZW5lcmF0b3Iodm0pOworICAgIHJldHVybiByZWFkYWJsZVN0cmVhbUludGVybmFs
c1ByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyQ29kZUdlbmVyYXRv
cih2bSkudmFsdWUoKTsKIH0KIAogdGVtcGxhdGU8PiBGdW5jdGlvbkV4ZWN1dGFibGUqIEpTQnVp
bHRpblJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJQcml2YXRlQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVFeGVjdXRhYmxlKEpTQzo6Vk0mIHZtKQogewotICAgIHJldHVybiByZWFkYWJsZVN0
cmVhbUludGVybmFsc1ByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlckNvZGVHZW5lcmF0b3Iodm0pOworICAgIHJldHVybiByZWFkYWJsZVN0cmVhbUludGVybmFs
c1ByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckNvZGVHZW5l
cmF0b3Iodm0pLnZhbHVlKCk7CiB9CiAKIHRlbXBsYXRlPD4gRnVuY3Rpb25FeGVjdXRhYmxlKiBK
U0J1aWx0aW5SZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjpp
bml0aWFsaXplRXhlY3V0YWJsZShKU0M6OlZNJiB2bSkKIHsKLSAgICByZXR1cm4gcmVhZGFibGVC
eXRlU3RyZWFtSW50ZXJuYWxzUHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZUJ5dGVTdHJlYW1Db250
cm9sbGVyQ29kZUdlbmVyYXRvcih2bSk7CisgICAgcmV0dXJuIHJlYWRhYmxlQnl0ZVN0cmVhbUlu
dGVybmFsc1ByaXZhdGVJbml0aWFsaXplUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlckNvZGVH
ZW5lcmF0b3Iodm0pLnZhbHVlKCk7CiB9CiAKIHRlbXBsYXRlPD4gRnVuY3Rpb25FeGVjdXRhYmxl
KiBKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXJQcml2YXRlQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVFeGVjdXRhYmxlKEpTQzo6Vk0mIHZtKQogewotICAgIHJldHVybiByZWFkYWJsZUJ5
dGVTdHJlYW1JbnRlcm5hbHNQcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtQllPQlJlYWRl
ckNvZGVHZW5lcmF0b3Iodm0pOworICAgIHJldHVybiByZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5h
bHNQcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtQllPQlJlYWRlckNvZGVHZW5lcmF0b3Io
dm0pLnZhbHVlKCk7CiB9CiAKIHRlbXBsYXRlPD4gRnVuY3Rpb25FeGVjdXRhYmxlKiBKU0J1aWx0
aW5SZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0UHJpdmF0ZUNvbnN0cnVjdG9yOjppbml0aWFsaXpl
RXhlY3V0YWJsZShKU0M6OlZNJiB2bSkKIHsKLSAgICByZXR1cm4gcmVhZGFibGVCeXRlU3RyZWFt
SW50ZXJuYWxzUHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0Q29kZUdl
bmVyYXRvcih2bSk7CisgICAgcmV0dXJuIHJlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFsc1ByaXZh
dGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdENvZGVHZW5lcmF0b3Iodm0pLnZh
bHVlKCk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXJQ
cml2YXRlQ29uc3RydWN0b3IoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQppbmRleCAzMGEzNzRjMjgyNGZhMjYwODI0MmFhMzg3MTA5ODQyMDJiNWQwZWMwLi4wMmVk
M2UwOTZiYjk0MWRhZjlmMzRiOTg0OWViNTI2MDRkZDZjNjgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNzE3OCw3ICs3
MTc4LDcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiAgICAgaWYgKElz
SlNCdWlsdGluQ29uc3RydWN0b3IoJGludGVyZmFjZSkpIHsKICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAidGVtcGxhdGU8PiBGdW5jdGlvbkV4ZWN1dGFibGUqICR7Y29uc3RydWN0b3JDbGFz
c05hbWV9Ojppbml0aWFsaXplRXhlY3V0YWJsZShWTSYgdm0pXG4iKTsKICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAie1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBy
ZXR1cm4gIiAuIEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFtZUZyb21TdHJpbmcoJGludGVyZmFjZS0+
dHlwZS0+bmFtZSwgImluaXRpYWxpemUiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSkgLiAiKHZt
KTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuICIgLiBHZXRK
U0J1aWx0aW5GdW5jdGlvbk5hbWVGcm9tU3RyaW5nKCRpbnRlcmZhY2UtPnR5cGUtPm5hbWUsICJp
bml0aWFsaXplIiAuICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUpIC4gIih2bSkudmFsdWUoKTtcbiIp
OwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG4iKTsKICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiXG4iKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAppbmRleCAxNWUyZTQwMDVlNWU1ZDk0NDNiM2U2
OWFiMDYwOGZiZjY0MjM2MzY4Li41MGZlZmZiYjFhZjMwNzBlMDQzNTNlZjJkM2Q4ZjYzMzBkZmY3
ODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXIKIAog
dGVtcGxhdGU8PiBGdW5jdGlvbkV4ZWN1dGFibGUqIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yQ29uc3RydWN0b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKFZNJiB2bSkKIHsKLSAg
ICByZXR1cm4gdGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9ySW5pdGlhbGl6ZVRlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvZGVHZW5lcmF0b3Iodm0pOworICAgIHJldHVy
biB0ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JJbml0aWFsaXplVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29kZUdlbmVyYXRvcih2bSkudmFsdWUoKTsKIH0KIAogdGVt
cGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZTJhZTViZDhhNDNj
YzFkYzk1NzRiYjYzZmE0ZjM2NWZmYTM2MTY1Mi4uODI1M2JhYmYyMTU4YjJjMjhmNzliZGFlMGY2
MDBiOGUzZGJjOWIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3Iu
Y3BwCkBAIC05MSw3ICs5MSw3IEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYKIAogdGVtcGxhdGU8
PiBGdW5jdGlvbkV4ZWN1dGFibGUqIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0
b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKFZNJiB2bSkKIHsKLSAgICByZXR1cm4gdGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9ySW5pdGlhbGl6ZVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvZGVHZW5l
cmF0b3Iodm0pOworICAgIHJldHVybiB0ZXN0SlNCdWlsdGluQ29uc3RydWN0b3JJbml0aWFsaXpl
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29kZUdlbmVyYXRvcih2bSkudmFsdWUoKTsKIH0KIAog
dGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VM
b2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAyM2FlZGU5MmZiM2ZmMTUxM2EyODZlNmViODAz
Zjg0MmVjNzUyNDViLi5jYzcyMGQ5Y2I0ZmQxNzIyMjQwMjZmZmZiYjYxYjY2NWJkNzUyMmRmIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDE4LTA1LTAzICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBs
ZS5jb20+CisKKyAgICAgICAgQSBzdGFjayBvdmVyZmxvdyBpbiB0aGUgcGFyc2luZyBvZiBhIGJ1
aWx0aW4gKGNhbGxlZCBieSBjcmVhdGVFeGVjdXRhYmxlKSBjYXVzZSBhIGNyYXNoIGluc3RlYWQg
b2YgYSBjYXRjaGFibGUganMgZXhjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODQwNzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM3MTY1
ODk3PgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlaXRoIE1pbGxlciBhbmQgSkYgQmFzdGllbi4K
KworICAgICAgICAqIHN0cmVzcy9zdGFjay1vdmVyZmxvdy13aGlsZS1wYXJzaW5nLWJ1aWx0aW4u
anM6IEFkZGVkLgorICAgICAgICAoZik6CisKIDIwMTgtMDUtMDIgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBKU0Mgc2hvdWxkIGtub3cgaG93IHRvIGNhY2hlIGN1
c3RvbSBnZXR0ZXIgYWNjZXNzZXMgb24gdGhlIHByb3RvdHlwZSBjaGFpbgpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3Mvc3RhY2stb3ZlcmZsb3ctd2hpbGUtcGFyc2luZy1idWlsdGluLmpzIGIv
SlNUZXN0cy9zdHJlc3Mvc3RhY2stb3ZlcmZsb3ctd2hpbGUtcGFyc2luZy1idWlsdGluLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmYyMjEwNmY0M2JjZjI5M2M1ZTJiODUwN2IwMTBlN2U3YzQ1NjRmZDAKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zdGFjay1vdmVyZmxvdy13aGlsZS1wYXJzaW5n
LWJ1aWx0aW4uanMKQEAgLTAsMCArMSwxMyBAQAorLy9AIHJ1bkRlZmF1bHQoIi0tbWF4UGVyVGhy
ZWFkU3RhY2tVc2FnZT0xMDAwMDAwIiwgIi0tcmVzZXJ2ZWRab25lU2l6ZT0wIikKKworZnVuY3Rp
b24gZigpIHsKKyAgICB0cnkgeworICAgICAgICBmKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICB0cnkgeworICAgICAgICAgICAgTWFwLnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoJycsIHt9
KTsKKyAgICAgICAgfSBjYXRjaCB7fQorICAgIH0KK30KKworZigpCg==
</data>
<flag name="review"
          id="357654"
          type_id="1"
          status="-"
          setter="rmorisset"
    />
    <flag name="commit-queue"
          id="357655"
          type_id="3"
          status="-"
          setter="rmorisset"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343216</attachid>
            <date>2018-06-20 23:18:34 -0700</date>
            <delta_ts>2018-06-28 13:32:24 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>27275</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3RyeS1nZXQtYnktaWQtYmFzaWMuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvdHJ5LWdldC1ieS1pZC1iYXNpYy5q
cwkocmV2aXNpb24gMjMyOTUzKQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvdHJ5LWdldC1i
eS1pZC1iYXNpYy5qcwkod29ya2luZyBjb3B5KQpAQCAtOCw3ICs4LDcgQEAgY29uc3QgY2hlY2sg
PSAoZ290LCBleHBlY3QpID0+IHsgaWYgKGdvdAogCiBjb25zdCBiZW5jaCA9IGYgPT4gewogICAg
IC8vIFJlLWNyZWF0ZSB0aGUgYnVpbHRpbiBlYWNoIHRpbWUsIHNvIGVhY2ggYmVuY2htYXJrIGdl
dHMgaXRzIG93biB2YWx1ZSBwcmVkaWN0aW9uLgotICAgIGNvbnN0IGZvb1BsdXNCYXIgPSBjcmVh
dGVCdWlsdGluKGAoZnVuY3Rpb24obykgeyByZXR1cm4gQHRyeUdldEJ5SWQobywgImZvbyIpICsg
QHRyeUdldEJ5SWQobywgImJhciIpOyB9KWApOworICAgIGNvbnN0IGZvb1BsdXNCYXIgPSBjcmVh
dGVCdWlsdGluKGAoZnVuY3Rpb24gKG8pIHsgcmV0dXJuIEB0cnlHZXRCeUlkKG8sICJmb28iKSAr
IEB0cnlHZXRCeUlkKG8sICJiYXIiKTsgfSlgKTsKICAgICBub0lubGluZShmb29QbHVzQmFyKTsK
ICAgICBmKGZvb1BsdXNCYXIpOwogfQpJbmRleDogSlNUZXN0cy9zdHJlc3MvYXJyYXktcHVzaC13
aXRoLWZvcmNlLWV4aXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvYXJyYXktcHVz
aC13aXRoLWZvcmNlLWV4aXQuanMJKHJldmlzaW9uIDIzMjk1MykKKysrIEpTVGVzdHMvc3RyZXNz
L2FycmF5LXB1c2gtd2l0aC1mb3JjZS1leGl0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NiBAQAogdmFyIGNyZWF0ZUJ1aWx0aW4gPSAkdm0uY3JlYXRlQnVpbHRpbjsKIAotdmFyIHRhcmdl
dCA9IGNyZWF0ZUJ1aWx0aW4oYChmdW5jdGlvbihhcnJheSkKK3ZhciB0YXJnZXQgPSBjcmVhdGVC
dWlsdGluKGAoZnVuY3Rpb24gKGFycmF5KQogewogICAgIGlmIChhcnJheSkgewogICAgICAgICBA
aWRXaXRoUHJvZmlsZShhcnJheSwgIlNwZWNPdGhlciIpLnB1c2goNDIpOwpJbmRleDogSlNUZXN0
cy9zdHJlc3MvaXMtY29uc3RydWN0b3IuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3Mv
aXMtY29uc3RydWN0b3IuanMJKHJldmlzaW9uIDIzMjk1MykKKysrIEpTVGVzdHMvc3RyZXNzL2lz
LWNvbnN0cnVjdG9yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQCBmdW5jdGlvbiBh
c3NlcnQoeCkgewogICAgICAgICB0aHJvdyBFcnJvcigiQmFkIik7CiB9CiAKLWxldCBpc0NvbnN0
cnVjdG9yID0gY3JlYXRlQnVpbHRpbigiKGZ1bmN0aW9uKGMpIHsgcmV0dXJuIEBpc0NvbnN0cnVj
dG9yKGMpOyB9KSIpOworbGV0IGlzQ29uc3RydWN0b3IgPSBjcmVhdGVCdWlsdGluKCIoZnVuY3Rp
b24gKGMpIHsgcmV0dXJuIEBpc0NvbnN0cnVjdG9yKGMpOyB9KSIpOwogCiAvLyBGdW5jdGlvbnMu
CiBhc3NlcnQoaXNDb25zdHJ1Y3Rvcihhc3NlcnQpKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3Rh
aWxDYWxsRm9yd2FyZEFyZ3VtZW50cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy90
YWlsQ2FsbEZvcndhcmRBcmd1bWVudHMuanMJKHJldmlzaW9uIDIzMjk1MykKKysrIEpTVGVzdHMv
c3RyZXNzL3RhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw3
ICsxLDcgQEAKIHZhciBjcmVhdGVCdWlsdGluID0gJHZtLmNyZWF0ZUJ1aWx0aW47CiAKIC8vIFRo
aXMgaXMgcHJldHR5IGJhZCBidXQgSSBuZWVkIGEgcHJpdmF0ZSBuYW1lLgotdmFyIHB1dEZ1bmNU
b1ByaXZhdGVOYW1lID0gY3JlYXRlQnVpbHRpbihgKGZ1bmN0aW9uKGZ1bmMpIHsgQGFycmF5SXRl
cmF0b3JJc0RvbmUgPSBmdW5jIH0pYCkKK3ZhciBwdXRGdW5jVG9Qcml2YXRlTmFtZSA9IGNyZWF0
ZUJ1aWx0aW4oYChmdW5jdGlvbiAoZnVuYykgeyBAYXJyYXlJdGVyYXRvcklzRG9uZSA9IGZ1bmMg
fSlgKQogcHV0RnVuY1RvUHJpdmF0ZU5hbWUoZnVuY3Rpb24gKGEsYikgeyByZXR1cm4gYjsgfSkK
IAogZnVuY3Rpb24gY3JlYXRlVGFpbENhbGxGb3J3YXJkaW5nRnVuY1dpdGgoYm9keSwgdGhpc1Zh
bHVlKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5bmNGcm9tU3lu
Y0l0ZXJhdG9yUHJvdG90eXBlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9Bc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUuanMJKHJldmlzaW9uIDIz
Mjk1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0Zyb21TeW5jSXRl
cmF0b3JQcm90b3R5cGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw2ICsxNTEsOCBAQCBmdW5j
dGlvbiB0aHJvdyhleGNlcHRpb24pCiBAZ2xvYmFsUHJpdmF0ZQogZnVuY3Rpb24gY3JlYXRlQXN5
bmNGcm9tU3luY0l0ZXJhdG9yKHN5bmNJdGVyYXRvciwgbmV4dE1ldGhvZCkKIHsKKyAgICAidXNl
IHN0cmljdCI7CisKICAgICBpZiAoIUBpc09iamVjdChzeW5jSXRlcmF0b3IpKQogICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoJ09ubHkgb2JqZWN0cyBjYW4gYmUgd3JhcHBlZCBieSBhc3luYy1mcm9t
LXN5bmMgd3JhcHBlcicpOwogCkBAIC0xNjEsNiArMTYzLDggQEAgZnVuY3Rpb24gY3JlYXRlQXN5
bmNGcm9tU3luY0l0ZXJhdG9yKHN5bgogQGNvbnN0cnVjdG9yCiBmdW5jdGlvbiBBc3luY0Zyb21T
eW5jSXRlcmF0b3JDb25zdHJ1Y3RvcihzeW5jSXRlcmF0b3IsIG5leHRNZXRob2QpCiB7CisgICAg
InVzZSBzdHJpY3QiOworCiAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJzeW5jSXRl
cmF0b3IiLCBzeW5jSXRlcmF0b3IpOwogICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAi
bmV4dE1ldGhvZCIsIG5leHRNZXRob2QpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAJKHJldmlzaW9uIDIz
Mjk1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJs
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw0MCArODUsMjAxIEBAIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGkKIAogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KQogewotICAg
IEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7Ci0gICAgUGFyc2VyRXJy
b3IgZXJyb3I7CisgICAgU3RyaW5nVmlldyB2aWV3ID0gc291cmNlLnZpZXcoKTsKKyAgICBSRUxF
QVNFX0FTU0VSVCghdmlldy5pc051bGwoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQodmlldy5pczhC
aXQoKSk7CisgICAgYXV0byogY2hhcmFjdGVycyA9IHZpZXcuY2hhcmFjdGVyczgoKTsKKyAgICBS
RUxFQVNFX0FTU0VSVCh2aWV3Lmxlbmd0aCgpID49IDE0KTsgLy8gc3RybGVuKCIoZnVuY3Rpb24o
KXt9KSIpID09IDE0CisgICAgUkVMRUFTRV9BU1NFUlQoY2hhcmFjdGVyc1swXSA9PSAgJygnKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChjaGFyYWN0ZXJzWzFdID09ICAnZicpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGNoYXJhY3RlcnNbMl0gPT0gICd1Jyk7CisgICAgUkVMRUFTRV9BU1NFUlQoY2hhcmFj
dGVyc1szXSA9PSAgJ24nKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjaGFyYWN0ZXJzWzRdID09ICAn
YycpOworICAgIFJFTEVBU0VfQVNTRVJUKGNoYXJhY3RlcnNbNV0gPT0gICd0Jyk7CisgICAgUkVM
RUFTRV9BU1NFUlQoY2hhcmFjdGVyc1s2XSA9PSAgJ2knKTsKKyAgICBSRUxFQVNFX0FTU0VSVChj
aGFyYWN0ZXJzWzddID09ICAnbycpOworICAgIFJFTEVBU0VfQVNTRVJUKGNoYXJhY3RlcnNbOF0g
PT0gICduJyk7CisgICAgUkVMRUFTRV9BU1NFUlQoY2hhcmFjdGVyc1s5XSA9PSAgJyAnKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChjaGFyYWN0ZXJzWzEwXSA9PSAnKCcpOworCisgICAgSlNUb2tlbkxv
Y2F0aW9uIHN0YXJ0OworICAgIHN0YXJ0LmxpbmUgPSAtMTsKKyAgICBzdGFydC5saW5lU3RhcnRP
ZmZzZXQgPSAtMTsKKyAgICBzdGFydC5zdGFydE9mZnNldCA9IDEwOworICAgIHN0YXJ0LmVuZE9m
ZnNldCA9IC0xOworCisgICAgSlNUb2tlbkxvY2F0aW9uIGVuZDsKKyAgICBlbmQubGluZSA9IDE7
CisgICAgZW5kLmxpbmVTdGFydE9mZnNldCA9IDA7CisgICAgZW5kLnN0YXJ0T2Zmc2V0ID0gMTsK
KyAgICBlbmQuZW5kT2Zmc2V0ID0gLTE7CisKKyAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IDEw
OyAvLyBzdHJsZW4oImZ1bmN0aW9uICgiKSA9PSAxMAorICAgIGludCBmdW5jdGlvbktleXdvcmRT
dGFydCA9IDE7IC8vIChmCisgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0ID0gMTA7CisgICAgaW50
IHBhcmFtZXRlcnNTdGFydCA9IDEwOworICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQgPSBmYWxz
ZTsKKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gZmFsc2U7CisKKyAg
ICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudDsKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGkgPSAx
MTsKKyAgICAgICAgdW5zaWduZWQgY29tbWFzID0gMDsKKyAgICAgICAgYm9vbCBzYXdPbmVQYXJh
bSA9IGZhbHNlOworICAgICAgICBib29sIGhhc1Jlc3RQYXJhbSA9IGZhbHNlOworICAgICAgICB3
aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgQVNTRVJUKGkgPCB2aWV3Lmxlbmd0aCgpKTsKKyAg
ICAgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldID09ICcpJykKKyAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0gPT0gJywnKQorICAgICAgICAgICAg
ICAgICsrY29tbWFzOworICAgICAgICAgICAgZWxzZSBpZiAoIUxleGVyPExDaGFyPjo6aXNXaGl0
ZVNwYWNlKGNoYXJhY3RlcnNbaV0pKQorICAgICAgICAgICAgICAgIHNhd09uZVBhcmFtID0gdHJ1
ZTsKKworICAgICAgICAgICAgaWYgKGkgKyAyIDwgdmlldy5sZW5ndGgoKSAmJiBjaGFyYWN0ZXJz
W2ldID09ICcuJyAmJiBjaGFyYWN0ZXJzW2kgKyAxXSA9PSAnLicgJiYgY2hhcmFjdGVyc1tpICsg
Ml0gPT0gJy4nKQorICAgICAgICAgICAgICAgIGhhc1Jlc3RQYXJhbSA9IHRydWU7CisKKyAgICAg
ICAgICAgICsraTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjb21tYXMpCisgICAgICAgICAg
ICBwYXJhbWV0ZXJDb3VudCA9IGNvbW1hcyArIDE7CisgICAgICAgIGVsc2UgaWYgKHNhd09uZVBh
cmFtKQorICAgICAgICAgICAgcGFyYW1ldGVyQ291bnQgPSAxOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBwYXJhbWV0ZXJDb3VudCA9IDA7CisKKyAgICAgICAgaWYgKGhhc1Jlc3RQYXJhbSkg
eworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocGFyYW1ldGVyQ291bnQpOworICAgICAgICAg
ICAgLS1wYXJhbWV0ZXJDb3VudDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHVuc2lnbmVkIGxp
bmVDb3VudCA9IDA7CisgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gMDsKKyAgICB1bnNpZ25lZCBv
ZmZzZXRPZkxhc3ROZXdsaW5lID0gMDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmll
dy5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldID09ICdcbicpIHsK
KyAgICAgICAgICAgICsrbGluZUNvdW50OworICAgICAgICAgICAgZW5kQ29sdW1uID0gMDsKKyAg
ICAgICAgICAgIG9mZnNldE9mTGFzdE5ld2xpbmUgPSBpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICsrZW5kQ29sdW1uOworCisgICAgICAgIGlmICghaXNJblN0cmljdENvbnRleHQgJiYg
KGNoYXJhY3RlcnNbaV0gPT0gJyInIHx8IGNoYXJhY3RlcnNbaV0gPT0gJ1wnJykpIHsKKyAgICAg
ICAgICAgIGlmIChpICsgMSArIHN0cmxlbigidXNlIHN0cmljdCIpIDw9IHZpZXcubGVuZ3RoKCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAoIW1lbWNtcChjaGFyYWN0ZXJzICsgaSArIDEsICJ1c2Ug
c3RyaWN0Iiwgc3RybGVuKCJ1c2Ugc3RyaWN0IikpKQorICAgICAgICAgICAgICAgICAgICBpc0lu
U3RyaWN0Q29udGV4dCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpbnQgY2xvc2VCcmFjZU9mZnNldEZyb21FbmQgPSAxOworICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgIGlmIChjaGFyYWN0ZXJzW3ZpZXcubGVuZ3RoKCkgLSBjbG9zZUJyYWNlT2Zmc2V0
RnJvbUVuZF0gPT0gJ30nKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICsrY2xvc2VCcmFj
ZU9mZnNldEZyb21FbmQ7CisgICAgfQorCisgICAgdW5zaWduZWQgcG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZUxpbmVTdGFydE9mZnNldCA9IDA7CisgICAgZm9yIChpbnQgaSA9IG9mZnNldE9mTGFz
dE5ld2xpbmUgLSAxOyB0cnVlOyApIHsKKyAgICAgICAgaWYgKGkgPCAwKQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldID09ICdcbicpIHsKKyAgICAgICAgICAg
IHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmVMaW5lU3RhcnRPZmZzZXQgPSBpICsgMTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIC0taTsKKyAgICB9CisKKyAgICBKU1Rl
eHRQb3NpdGlvbiB0aGVQb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOworICAgIHRoZVBvc2l0aW9u
QmVmb3JlTGFzdE5ld2xpbmUubGluZSA9IGxpbmVDb3VudDsKKyAgICB0aGVQb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lLm9mZnNldCA9IG9mZnNldE9mTGFzdE5ld2xpbmU7CisgICAgdGhlUG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZS5saW5lU3RhcnRPZmZzZXQgPSBwb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lTGluZVN0YXJ0T2Zmc2V0OworCisgICAgU291cmNlQ29kZSBuZXdTb3VyY2UgPSBzb3Vy
Y2Uuc3ViRXhwcmVzc2lvbigxMCwgdmlldy5sZW5ndGgoKSAtIGNsb3NlQnJhY2VPZmZzZXRGcm9t
RW5kLCAwLCAxMCk7CiAgICAgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9
IGNvbnN0cnVjdG9yS2luZCAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7Ci0gICAgSlNQYXJzZXJC
dWlsdGluTW9kZSBidWlsdGluTW9kZSA9IGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9y
ID8gSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiA6IEpTUGFyc2VyQnVpbHRpbk1vZGU6
OkJ1aWx0aW47CiAgICAgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCA9IGlzQnVpbHRpbkRlZmF1
bHRDbGFzc0NvbnN0cnVjdG9yID8gVW5saW5rZWROb3JtYWxGdW5jdGlvbiA6IFVubGlua2VkQnVp
bHRpbkZ1bmN0aW9uOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9
IHBhcnNlPFByb2dyYW1Ob2RlPigKLSAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwg
YnVpbHRpbk1vZGUsCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBKU1Bh
cnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwKLSAgICAgICAgJnBvc2l0aW9uQmVmb3JlTGFz
dE5ld2xpbmUsIGNvbnN0cnVjdG9yS2luZCk7Ci0KLSAgICBpZiAoIXByb2dyYW0pIHsKLSAgICAg
ICAgZGF0YUxvZygiRmF0YWwgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW4gZnVuY3Rpb24gJyIsIG5h
bWUuc3RyaW5nKCksICInOiAiLCBlcnJvci5tZXNzYWdlKCkpOwotICAgICAgICBDUkFTSCgpOwor
CisgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUgdGhlTWV0YWRhdGEoCisgICAgICAgIHN0YXJ0LCBl
bmQsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlv
bk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LAorICAgICAgICBpc0luU3RyaWN0Q29udGV4dCwg
Y29uc3RydWN0b3JLaW5kLCBjb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0b3JLaW5kOjpFeHRl
bmRzID8gU3VwZXJCaW5kaW5nOjpOZWVkZWQgOiBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwKKyAg
ICAgICAgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2Rl
LCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisKKyAgICB0aGVNZXRhZGF0YS5maW5p
c2hQYXJzaW5nKG5ld1NvdXJjZSwgSWRlbnRpZmllcigpLCBGdW5jdGlvbk1vZGU6OkZ1bmN0aW9u
RXhwcmVzc2lvbik7CisgICAgdGhlTWV0YWRhdGEub3ZlcnJpZGVOYW1lKG5hbWUpOworICAgIHRo
ZU1ldGFkYXRhLnNldEVuZFBvc2l0aW9uKHRoZVBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwor
CisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQgfHwgdHJ1ZSkgeworICAgICAgICBKU1RleHRQb3Np
dGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOworICAgICAgICBQYXJzZXJFcnJvciBlcnJv
cjsKKyAgICAgICAgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSA9IGlzQnVpbHRpbkRl
ZmF1bHRDbGFzc0NvbnN0cnVjdG9yID8gSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiA6
IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW47CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
cm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigKKyAgICAgICAgICAgICZ2
bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLAorICAgICAgICAgICAgSlNQYXJz
ZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU291
cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9y
LAorICAgICAgICAgICAgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUsIGNvbnN0cnVjdG9yS2lu
ZCk7CisKKyAgICAgICAgaWYgKCFwcm9ncmFtKSB7CisgICAgICAgICAgICBkYXRhTG9nKCJGYXRh
bCBlcnJvciBjb21waWxpbmcgYnVpbHRpbiBmdW5jdGlvbiAnIiwgbmFtZS5zdHJpbmcoKSwgIic6
ICIsIGVycm9yLm1lc3NhZ2UoKSk7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisK
KyAgICAgICAgU3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0
YXRlbWVudCgpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVtZW50KTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOworICAg
ICAgICBFeHByZXNzaW9uTm9kZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50
Tm9kZSo+KGV4cHJTdGF0ZW1lbnQpLT5leHByKCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGZ1
bmNFeHByKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHItPmlzRnVuY0V4cHJOb2Rl
KCkpOworICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbWV0YWRhdGEgPSBzdGF0aWNfY2Fz
dDxGdW5jRXhwck5vZGUqPihmdW5jRXhwciktPm1ldGFkYXRhKCk7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFwcm9ncmFtLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKKyAgICAgICAgCisgICAg
ICAgIG1ldGFkYXRhLT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQobWV0YWRhdGEpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChtZXRhZGF0YS0+aWRlbnQoKS5pc051bGwoKSk7CisgICAgICAgIAorICAgICAgICAvLyBUaGlz
IGZ1bmN0aW9uIGFzc3VtZXMgYW4gaW5wdXQgc3RyaW5nIHRoYXQgd291bGQgcmVzdWx0IGluIGEg
c2luZ2xlIGFub255bW91cyBmdW5jdGlvbiBleHByZXNzaW9uLgorICAgICAgICBtZXRhZGF0YS0+
c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1ldGFkYXRhKTsKKyAgICAgICAgbWV0YWRhdGEtPm92ZXJyaWRlTmFtZShuYW1l
KTsKKyAgICAgICAgbWV0YWRhdGEtPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmUpOworCisgICAgICAgIGF1dG8gZHVtcE1ldGFkYXRhID0gWyZdIChGdW5jdGlvbk1ldGFk
YXRhTm9kZSogbWV0YWRhdGEpIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSIpOworICAgICAgICAgICAgZGF0YUxvZyhzb3VyY2UudmlldygpKTsKKyAg
ICAgICAgICAgIGRhdGFMb2dMbigiPT09PT0iKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigqbWV0
YWRhdGEpOworICAgICAgICAgICAgZGF0YUxvZ0xuKCJtZXRhZGF0YS0+bV9zb3VyY2UucHJvdmlk
ZXI6ICIsIFJhd1BvaW50ZXIobWV0YWRhdGEtPm1fc291cmNlLnByb3ZpZGVyKCkpKTsKKyAgICAg
ICAgICAgIGRhdGFMb2dMbigibWV0YWRhdGEtPm1fc291cmNlLmZpcnN0TGluZTogIiwgbWV0YWRh
dGEtPm1fc291cmNlLmZpcnN0TGluZSgpLnplcm9CYXNlZEludCgpKTsKKyAgICAgICAgICAgIGRh
dGFMb2dMbigibWV0YWRhdGEtPm1fc291cmNlLnN0YXJ0Q29sdW1uOiAiLCBtZXRhZGF0YS0+bV9z
b3VyY2Uuc3RhcnRDb2x1bW4oKS56ZXJvQmFzZWRJbnQoKSk7CisgICAgICAgICAgICBkYXRhTG9n
TG4oIm1ldGFkYXRhLT5tX3NvdXJjZS5sZW5ndGg6ICIsIG1ldGFkYXRhLT5tX3NvdXJjZS5sZW5n
dGgoKSk7CisgICAgICAgICAgICBkYXRhTG9nTG4oIm1ldGFkYXRhLT5tX3NvdXJjZS5zdGFydE9m
ZnNldDogIiwgbWV0YWRhdGEtPm1fc291cmNlLnN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAg
ZGF0YUxvZ0xuKCJtZXRhZGF0YS0+bV9zb3VyY2UuZW5kT2Zmc2V0OiAiLCBtZXRhZGF0YS0+bV9z
b3VyY2UuZW5kT2Zmc2V0KCkpOworICAgICAgICAgICAgLy9kYXRhTG9nTG4oIm1fc291cmNlID09
IHNvdXJjZSIgLCBtZXRhZGF0YS0+bV9zb3VyY2UucHJvdmlkZXIoKSA9PSBzb3VyY2UucHJvdmlk
ZXIoKSAmJiBtZXRhZGF0YS0+bV9zb3VyY2UuZmlyc3RMaW5lKCkgPT0gc291cmNlLmZpcnN0TGlu
ZSgpICYmIG1ldGFkYXRhLT5tX3NvdXJjZS5zdGFydENvbHVtbigpID09IHNvdXJjZS5zdGFydENv
bHVtbigpICYmIG1ldGFkYXRhLT5tX3NvdXJjZS5sZW5ndGgoKSA9PSBzb3VyY2UubGVuZ3RoKCkg
JiYgbWV0YWRhdGEtPm1fc291cmNlLnN0YXJ0T2Zmc2V0KCkgPT0gc291cmNlLnN0YXJ0T2Zmc2V0
KCkgJiYgbWV0YWRhdGEtPm1fc291cmNlLmVuZE9mZnNldCgpID09IHNvdXJjZS5lbmRPZmZzZXQo
KSk7CisgICAgICAgICAgICBkYXRhTG9nTG4oInBvc2l0aW9uKCkubGluZSAiLCBtZXRhZGF0YS0+
cG9zaXRpb24oKS5saW5lKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigicG9zaXRpb24oKS5vZmZz
ZXQgIiwgbWV0YWRhdGEtPnBvc2l0aW9uKCkub2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2dM
bigicG9zaXRpb24oKS5saW5lU3RhcnRPZmZzZXQgIiwgbWV0YWRhdGEtPnBvc2l0aW9uKCkubGlu
ZVN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSIpOworICAgICAgICB9OworCisgICAgICAgIGlmICh0aGVNZXRhZGF0YSAhPSAqbWV0
YWRhdGEgfHwgcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSAhPSB0aGVQb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lKSB7CisgICAgICAgICAgICBkdW1wTWV0YWRhdGEobWV0YWRhdGEpOworICAgICAg
ICAgICAgZHVtcE1ldGFkYXRhKCZ0aGVNZXRhZGF0YSk7CisgICAgICAgICAgICBkYXRhTG9nTG4o
Im1ldGFkYXRhcyBhcmUgZXF1YWw6ICIsIHRoZU1ldGFkYXRhID09ICptZXRhZGF0YSk7CisgICAg
ICAgICAgICBkYXRhTG9nTG4oInBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUubGluZSAiLCBwb3Np
dGlvbkJlZm9yZUxhc3ROZXdsaW5lLmxpbmUpOworICAgICAgICAgICAgZGF0YUxvZ0xuKCJwb3Np
dGlvbkJlZm9yZUxhc3ROZXdsaW5lLm9mZnNldCAiLCBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5l
Lm9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nTG4oInBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUubGluZVN0YXJ0T2Zmc2V0ICIsIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUubGluZVN0YXJ0
T2Zmc2V0KTsKKworICAgICAgICAgICAgZGF0YUxvZ0xuKCJlbmRQb3NpdGlvbi5vZmZzZXQgIiwg
dGhlUG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZS5vZmZzZXQpOworICAgICAgICAgICAgZGF0YUxv
Z0xuKCJlbmRQb3NpdGlvbi5saW5lU3RhcnRPZmZzZXQgIiwgdGhlUG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZS5saW5lU3RhcnRPZmZzZXQpOworICAgICAgICB9CisKICAgICB9CiAKLSAgICBTdGF0
ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50KCk7Ci0g
ICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoZXhw
clN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBmdW5j
RXhwciA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oZXhwclN0YXRlbWVudCktPmV4
cHIoKTsKLSAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwcik7Ci0gICAgUkVMRUFTRV9BU1NFUlQo
ZnVuY0V4cHItPmlzRnVuY0V4cHJOb2RlKCkpOwotICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBt
ZXRhZGF0YSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGZ1bmNFeHByKS0+bWV0YWRhdGEo
KTsKLSAgICBSRUxFQVNFX0FTU0VSVCghcHJvZ3JhbS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7
Ci0gICAgCi0gICAgbWV0YWRhdGEtPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmUpOwotICAgIFJFTEVBU0VfQVNTRVJUKG1ldGFkYXRhKTsKLSAgICBSRUxFQVNFX0FTU0VS
VChtZXRhZGF0YS0+aWRlbnQoKS5pc051bGwoKSk7Ci0gICAgCi0gICAgLy8gVGhpcyBmdW5jdGlv
biBhc3N1bWVzIGFuIGlucHV0IHN0cmluZyB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhIHNpbmdsZSBh
bm9ueW1vdXMgZnVuY3Rpb24gZXhwcmVzc2lvbi4KLSAgICBtZXRhZGF0YS0+c2V0RW5kUG9zaXRp
b24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobWV0YWRh
dGEpOwotICAgIG1ldGFkYXRhLT5vdmVycmlkZU5hbWUobmFtZSk7CisKKwogICAgIFZhcmlhYmxl
RW52aXJvbm1lbnQgZHVtbXlURFpWYXJpYWJsZXM7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
cmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1Bh
cnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIGR1bW15VERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4
dFR5cGU6Ok5vbmUsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKKyAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgJnRoZU1ldGFkYXRhLCBraW5kLCBj
b25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIGR1bW15VERaVmFy
aWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0Nv
bnN0cnVjdG9yKTsKICAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxlOwogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT3BlcmF0aW9ucy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT3BlcmF0aW9ucy5q
cwkocmV2aXNpb24gMjMyOTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0ds
b2JhbE9wZXJhdGlvbnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTYyLDEyICs2MiwxNSBAQCBmdW5j
dGlvbiBpc0RpY3Rpb25hcnkob2JqZWN0KQogQG92ZXJyaWRkZW5OYW1lPSJnZXQgW1N5bWJvbC5z
cGVjaWVzXSIKIGZ1bmN0aW9uIHNwZWNpZXNHZXR0ZXIoKQogeworICAgICJ1c2Ugc3RyaWN0IjsK
ICAgICByZXR1cm4gdGhpczsKIH0KIAogQGdsb2JhbFByaXZhdGUKIGZ1bmN0aW9uIHNwZWNpZXND
b25zdHJ1Y3RvcihvYmosIGRlZmF1bHRDb25zdHJ1Y3RvcikKIHsKKyAgICAidXNlIHN0cmljdCI7
CisKICAgICB2YXIgY29uc3RydWN0b3IgPSBvYmouY29uc3RydWN0b3I7CiAgICAgaWYgKGNvbnN0
cnVjdG9yID09PSBAdW5kZWZpbmVkKQogICAgICAgICByZXR1cm4gZGVmYXVsdENvbnN0cnVjdG9y
OwpAQCAtODQsNiArODcsOCBAQCBmdW5jdGlvbiBzcGVjaWVzQ29uc3RydWN0b3Iob2JqLCBkZWZh
dWx0CiBAZ2xvYmFsUHJpdmF0ZQogZnVuY3Rpb24gY29weURhdGFQcm9wZXJ0aWVzKHRhcmdldCwg
c291cmNlLCBleGNsdWRlZFNldCkKIHsKKyAgICAidXNlIHN0cmljdCI7CisKICAgICBpZiAoIUBp
c09iamVjdCh0YXJnZXQpKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoInRhcmdldCBuZWVkcyB0
byBiZSBhbiBvYmplY3QiKTsKIApAQCAtMTA5LDYgKzExNCw4IEBAIGZ1bmN0aW9uIGNvcHlEYXRh
UHJvcGVydGllcyh0YXJnZXQsIHNvdXIKIEBnbG9iYWxQcml2YXRlCiBmdW5jdGlvbiBjb3B5RGF0
YVByb3BlcnRpZXNOb0V4Y2x1c2lvbnModGFyZ2V0LCBzb3VyY2UpCiB7CisgICAgInVzZSBzdHJp
Y3QiOworCiAgICAgaWYgKCFAaXNPYmplY3QodGFyZ2V0KSkKICAgICAgICAgQHRocm93VHlwZUVy
cm9yKCJ0YXJnZXQgbmVlZHMgdG8gYmUgYW4gb2JqZWN0Iik7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlT3BlcmF0aW9ucy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZU9wZXJhdGlvbnMuanMJKHJldmlz
aW9uIDIzMjk1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlT3Bl
cmF0aW9ucy5qcwkod29ya2luZyBjb3B5KQpAQCAtODcsNiArODcsNyBAQCBmdW5jdGlvbiBuZXdQ
cm9taXNlQ2FwYWJpbGl0eShjb25zdHJ1Y3RvCiBAZ2xvYmFsUHJpdmF0ZQogZnVuY3Rpb24gbmV3
SGFuZGxlZFJlamVjdGVkUHJvbWlzZShlcnJvcikKIHsKKyAgICAidXNlIHN0cmljdCI7CiAgICAg
bGV0IHByb21pc2UgPSBAUHJvbWlzZS5AcmVqZWN0KGVycm9yKTsKICAgICBAcHV0QnlJZERpcmVj
dFByaXZhdGUocHJvbWlzZSwgInByb21pc2VJc0hhbmRsZWQiLCB0cnVlKTsKICAgICByZXR1cm4g
cHJvbWlzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWdFeHBQcm90
b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Jl
Z0V4cFByb3RvdHlwZS5qcwkocmV2aXNpb24gMjMyOTUzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL1JlZ0V4cFByb3RvdHlwZS5qcwkod29ya2luZyBjb3B5KQpAQCAtNjMsNyAr
NjMsMTAgQEAgZnVuY3Rpb24gcmVnRXhwRXhlYyhyZWdleHAsIHN0cikKIH0KIAogQGdsb2JhbFBy
aXZhdGUKLWZ1bmN0aW9uIGhhc09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclJlZ0V4cE1hdGNoKHJl
Z2V4cCkgeworZnVuY3Rpb24gaGFzT2JzZXJ2YWJsZVNpZGVFZmZlY3RzRm9yUmVnRXhwTWF0Y2go
cmVnZXhwKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKwogICAgIC8vIFRoaXMgaXMgYWNjZXNzZWQg
YnkgdGhlIFJlZ0V4cEV4ZWMgaW50ZXJuYWwgZnVuY3Rpb24uCiAgICAgbGV0IHJlZ2V4cEV4ZWMg
PSBAdHJ5R2V0QnlJZChyZWdleHAsICJleGVjIik7CiAgICAgaWYgKHJlZ2V4cEV4ZWMgIT09IEBy
ZWdFeHBCdWlsdGluRXhlYykKQEAgLTM1MSw3ICszNTQsMTAgQEAgZnVuY3Rpb24gc2VhcmNoKHN0
ckFyZykKIH0KIAogQGdsb2JhbFByaXZhdGUKLWZ1bmN0aW9uIGhhc09ic2VydmFibGVTaWRlRWZm
ZWN0c0ZvclJlZ0V4cFNwbGl0KHJlZ2V4cCkgeworZnVuY3Rpb24gaGFzT2JzZXJ2YWJsZVNpZGVF
ZmZlY3RzRm9yUmVnRXhwU3BsaXQocmVnZXhwKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKwogICAg
IC8vIFRoaXMgaXMgYWNjZXNzZWQgYnkgdGhlIFJlZ0V4cEV4ZWMgaW50ZXJuYWwgZnVuY3Rpb24u
CiAgICAgbGV0IHJlZ2V4cEV4ZWMgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJleGVjIik7CiAgICAg
aWYgKHJlZ2V4cEV4ZWMgIT09IEByZWdFeHBCdWlsdGluRXhlYykKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9TdHJpbmdQcm90b3R5cGUuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5qcwkocmV2aXNpb24g
MjMyOTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlw
ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMTkxLDcgKzE5MSwxMCBAQCBmdW5jdGlvbiBwYWRFbmQo
bWF4TGVuZ3RoLyosIGZpbGxTdHJpbmcqCiB9CiAKIEBnbG9iYWxQcml2YXRlCi1mdW5jdGlvbiBo
YXNPYnNlcnZhYmxlU2lkZUVmZmVjdHNGb3JTdHJpbmdSZXBsYWNlKHJlZ2V4cCwgcmVwbGFjZXIp
IHsKK2Z1bmN0aW9uIGhhc09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclN0cmluZ1JlcGxhY2UocmVn
ZXhwLCByZXBsYWNlcikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKICAgICBpZiAocmVwbGFjZXIg
IT09IEByZWdFeHBQcm90b3R5cGVTeW1ib2xSZXBsYWNlKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAKQEAgLTIzNSw2ICsyMzgsOCBAQCBmdW5jdGlvbiByZXBsYWNlKHNlYXJjaCwgcmVwbGFj
ZSkKIEBnbG9iYWxQcml2YXRlCiBmdW5jdGlvbiBnZXREZWZhdWx0Q29sbGF0b3IoKQogeworICAg
ICJ1c2Ugc3RyaWN0IjsKKwogICAgIHJldHVybiBAZ2V0RGVmYXVsdENvbGxhdG9yLmNvbGxhdG9y
IHx8IChAZ2V0RGVmYXVsdENvbGxhdG9yLmNvbGxhdG9yID0gbmV3IEBDb2xsYXRvcigpKTsKIH0K
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCShyZXZpc2lv
biAyMzI5NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjE0LDYgKzIxNCwyOSBAQCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVu
Y3Rpb25NZXRhZGF0YU5vCiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKIH0KIAorRnVuY3Rpb25NZXRhZGF0YU5v
ZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAorICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnRMb2NhdGlvbiwgCisgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5z
aWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgCisgICAgaW50IGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQs
IGJvb2wgaXNJblN0cmljdENvbnRleHQsIAorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50
LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bikKKyAgICAgICAgOiBOb2RlKGVuZExvY2F0aW9uKQorICAgICAgICAsIG1fc3RhcnRDb2x1bW4o
c3RhcnRDb2x1bW4pCisgICAgICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQorICAgICAgICAs
IG1fZnVuY3Rpb25LZXl3b3JkU3RhcnQoZnVuY3Rpb25LZXl3b3JkU3RhcnQpCisgICAgICAgICwg
bV9mdW5jdGlvbk5hbWVTdGFydChmdW5jdGlvbk5hbWVTdGFydCkKKyAgICAgICAgLCBtX3BhcmFt
ZXRlcnNTdGFydChwYXJhbWV0ZXJzU3RhcnQpCisgICAgICAgICwgbV9zdGFydFN0YXJ0T2Zmc2V0
KHN0YXJ0TG9jYXRpb24uc3RhcnRPZmZzZXQpCisgICAgICAgICwgbV9wYXJhbWV0ZXJDb3VudChw
YXJhbWV0ZXJDb3VudCkKKyAgICAgICAgLCBtX3BhcnNlTW9kZShtb2RlKQorICAgICAgICAsIG1f
aXNJblN0cmljdENvbnRleHQoaXNJblN0cmljdENvbnRleHQpCisgICAgICAgICwgbV9zdXBlckJp
bmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCisgICAgICAgICwgbV9j
b25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCisg
ICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbikKK3sKKyAgICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpOworICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2lu
ZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7Cit9CisKIHZvaWQg
RnVuY3Rpb25NZXRhZGF0YU5vZGU6OmZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkK
IHsKICAgICBtX3NvdXJjZSA9IHNvdXJjZTsKQEAgLTIyNyw2ICsyNTAsNTUgQEAgdm9pZCBGdW5j
dGlvbk1ldGFkYXRhTm9kZTo6c2V0RW5kUG9zaXRpbwogICAgIG1fZW5kQ29sdW1uID0gcG9zaXRp
b24ub2Zmc2V0IC0gcG9zaXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogfQogCitib29sIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlOjpvcGVyYXRvcj09KGNvbnN0IEZ1bmN0aW9uTWV0YWRhdGFOb2RlJiBvdGhl
cikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pZGVudCA9PSBvdGhlci5tX2lkZW50CisgICAgICAg
ICYmIG1fZWNtYU5hbWUgPT0gb3RoZXIubV9lY21hTmFtZQorICAgICAgICAmJiBtX2luZmVycmVk
TmFtZSA9PSBvdGhlci5tX2luZmVycmVkTmFtZQorICAgICAgICAmJiBtX2Z1bmN0aW9uTW9kZT09
IG90aGVyLm1fZnVuY3Rpb25Nb2RlCisgICAgICAgICYmIG1fc3RhcnRDb2x1bW49PSBvdGhlci5t
X3N0YXJ0Q29sdW1uCisgICAgICAgICYmIG1fZW5kQ29sdW1uPT0gb3RoZXIubV9lbmRDb2x1bW4K
KyAgICAgICAgJiYgbV9mdW5jdGlvbktleXdvcmRTdGFydD09IG90aGVyLm1fZnVuY3Rpb25LZXl3
b3JkU3RhcnQKKyAgICAgICAgJiYgbV9mdW5jdGlvbk5hbWVTdGFydD09IG90aGVyLm1fZnVuY3Rp
b25OYW1lU3RhcnQKKyAgICAgICAgJiYgbV9wYXJhbWV0ZXJzU3RhcnQ9PSBvdGhlci5tX3BhcmFt
ZXRlcnNTdGFydAorICAgICAgICAmJiBtX3NvdXJjZT09IG90aGVyLm1fc291cmNlCisgICAgICAg
ICYmIG1fY2xhc3NTb3VyY2U9PSBvdGhlci5tX2NsYXNzU291cmNlCisgICAgICAgICYmIG1fc3Rh
cnRTdGFydE9mZnNldD09IG90aGVyLm1fc3RhcnRTdGFydE9mZnNldAorICAgICAgICAmJiBtX3Bh
cmFtZXRlckNvdW50PT0gb3RoZXIubV9wYXJhbWV0ZXJDb3VudAorICAgICAgICAmJiBtX2xhc3RM
aW5lPT0gb3RoZXIubV9sYXN0TGluZQorICAgICAgICAmJiBtX3BhcnNlTW9kZT09IG90aGVyLm1f
cGFyc2VNb2RlCisgICAgICAgICYmIG1faXNJblN0cmljdENvbnRleHQgPT0gb3RoZXIubV9pc0lu
U3RyaWN0Q29udGV4dCAKKyAgICAgICAgJiYgbV9zdXBlckJpbmRpbmcgPT0gb3RoZXIubV9zdXBl
ckJpbmRpbmcgCisgICAgICAgICYmIG1fY29uc3RydWN0b3JLaW5kID09IG90aGVyLm1fY29uc3Ry
dWN0b3JLaW5kIAorICAgICAgICAmJiBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID09
IG90aGVyLm1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24KKyAgICAgICAgJiYgbV9wb3Np
dGlvbiA9PSBvdGhlci5tX3Bvc2l0aW9uOworfQorCit2b2lkIEZ1bmN0aW9uTWV0YWRhdGFOb2Rl
OjpkdW1wKFByaW50U3RyZWFtJiBzdHJlYW0pIGNvbnN0Cit7CisgICAgc3RyZWFtLnByaW50bG4o
Im1faWRlbnQgIiwgbV9pZGVudCk7CisgICAgc3RyZWFtLnByaW50bG4oIm1fZWNtYU5hbWUgIiwg
bV9lY21hTmFtZSk7CisgICAgc3RyZWFtLnByaW50bG4oIm1faW5mZXJyZWROYW1lICIsIG1faW5m
ZXJyZWROYW1lKTsKKyAgICBzdHJlYW0ucHJpbnRsbigibV9mdW5jdGlvbk1vZGUgIiwgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KG1fZnVuY3Rpb25Nb2RlKSk7CisgICAgc3RyZWFtLnByaW50bG4oIm1f
c3RhcnRDb2x1bW4gIiwgbV9zdGFydENvbHVtbiApOworICAgIHN0cmVhbS5wcmludGxuKCJtX2Vu
ZENvbHVtbiAiLG1fZW5kQ29sdW1uICk7CisgICAgc3RyZWFtLnByaW50bG4oIm1fZnVuY3Rpb25L
ZXl3b3JkU3RhcnQgIixtX2Z1bmN0aW9uS2V5d29yZFN0YXJ0ICk7CisgICAgc3RyZWFtLnByaW50
bG4oIm1fZnVuY3Rpb25OYW1lU3RhcnQgIixtX2Z1bmN0aW9uTmFtZVN0YXJ0ICk7CisgICAgc3Ry
ZWFtLnByaW50bG4oIm1fcGFyYW1ldGVyc1N0YXJ0ICIsIG1fcGFyYW1ldGVyc1N0YXJ0ICk7Cisg
ICAgc3RyZWFtLnByaW50bG4oIm1fY2xhc3NTb3VyY2UuaXNOdWxsKCkgIiwgbV9jbGFzc1NvdXJj
ZS5pc051bGwoKSk7CisgICAgc3RyZWFtLnByaW50bG4oIm1fc3RhcnRTdGFydE9mZnNldCAiLCBt
X3N0YXJ0U3RhcnRPZmZzZXQpOworICAgIHN0cmVhbS5wcmludGxuKCJtX3BhcmFtZXRlckNvdW50
ICIsIG1fcGFyYW1ldGVyQ291bnQpOworICAgIHN0cmVhbS5wcmludGxuKCJtX2xhc3RMaW5lICIs
IG1fbGFzdExpbmUpOworICAgIHN0cmVhbS5wcmludGxuKCJtX3BhcnNlTW9kZSAiLHN0YXRpY19j
YXN0PHVpbnQzMl90PihtX3BhcnNlTW9kZSkpOworICAgIHN0cmVhbS5wcmludGxuKCJtX2lzSW5T
dHJpY3RDb250ZXh0ICIsIG1faXNJblN0cmljdENvbnRleHQpOworICAgIHN0cmVhbS5wcmludGxu
KCJtX3N1cGVyQmluZGluZyAiLCBtX3N1cGVyQmluZGluZyk7CisgICAgc3RyZWFtLnByaW50bG4o
Im1fY29uc3RydWN0b3JLaW5kICIsIG1fY29uc3RydWN0b3JLaW5kKTsKKyAgICBzdHJlYW0ucHJp
bnRsbigibV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiAiLCBtX2lzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKTsKKyAgICBzdHJlYW0ucHJpbnRsbigicG9zaXRpb24oKS5saW5lICIs
IHBvc2l0aW9uKCkubGluZSk7CisgICAgc3RyZWFtLnByaW50bG4oInBvc2l0aW9uKCkub2Zmc2V0
ICIsIHBvc2l0aW9uKCkub2Zmc2V0KTsKKyAgICBzdHJlYW0ucHJpbnRsbigicG9zaXRpb24oKS5s
aW5lU3RhcnRPZmZzZXQgIiwgcG9zaXRpb24oKS5saW5lU3RhcnRPZmZzZXQpOworfQorCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25Ob2RlIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKIEZ1bmN0aW9uTm9kZTo6RnVuY3Rpb25Ob2RlKFBhcnNlckFyZW5h
JiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5z
aWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhcmlhYmxlRW52aXJv
bm1lbnQmIHZhckVudmlyb25tZW50LCBGdW5jdGlvblN0YWNrJiYgZnVuY1N0YWNrLCBWYXJpYWJs
ZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzLCBVbmlxdWVkU3RyaW5nSW1wbFB0clNldCYm
IHNsb3BweU1vZGVIb2lzdGVkRnVuY3Rpb25zLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRl
cnMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywg
SW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzIGlubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0
dXJlcywgaW50IG51bUNvbnN0YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4mJikKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHJldmlzaW9uIDIzMjk1MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTk4
OCw2ICsxOTg4LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaW50IGZ1bmN0aW9u
TmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAK
ICAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCB1bnNpZ25lZCBwYXJh
bWV0ZXJDb3VudCwKICAgICAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKAorICAg
ICAgICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBlbmQsIAorICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVu
ZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKKyAgICAgICAgICAgIGludCBmdW5j
dGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4
dCwgCisgICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgdW5zaWduZWQg
cGFyYW1ldGVyQ291bnQsCisgICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworCisgICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2Rl
JiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CiAgICAgICAgIApAQCAtMjAyOCw3
ICsyMDM2LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAgICAgICAgIHVuc2lnbmVk
IGxhc3RMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TGluZTsgfQogCi0gICAgcHJvdGVjdGVk
OgorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRnVuY3Rpb25NZXRhZGF0YU5vZGUmKSBj
b25zdDsKKyAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZ1bmN0aW9uTWV0YWRhdGFOb2Rl
JiBvdGhlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOworICAgICAgICB9CisKKyAgICBwdWJsaWM6CiAgICAgICAgIElkZW50aWZpZXIgbV9p
ZGVudDsKICAgICAgICAgSWRlbnRpZmllciBtX2VjbWFOYW1lOwogICAgICAgICBJZGVudGlmaWVy
IG1faW5mZXJyZWROYW1lOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJUb2tlbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlclRva2Vucy5oCShyZXZpc2lvbiAyMzI5NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlclRva2Vucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNiArMjAyLDE3IEBA
IHN0cnVjdCBKU1RleHRQb3NpdGlvbiB7CiAKICAgICBvcGVyYXRvciBpbnQoKSBjb25zdCB7IHJl
dHVybiBvZmZzZXQ7IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBKU1RleHRQb3NpdGlv
biYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbGluZSA9PSBvdGhlci5saW5l
CisgICAgICAgICAgICAmJiBvZmZzZXQgPT0gb3RoZXIub2Zmc2V0CisgICAgICAgICAgICAmJiBs
aW5lU3RhcnRPZmZzZXQgPT0gb3RoZXIubGluZVN0YXJ0T2Zmc2V0OworICAgIH0KKyAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgSlNUZXh0UG9zaXRpb24mIG90aGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKwogICAgIGludCBsaW5lOwog
ICAgIGludCBvZmZzZXQ7CiAgICAgaW50IGxpbmVTdGFydE9mZnNldDsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCShyZXZpc2lvbiAyMzI5NTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNzksNyArNzksMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgU291cmNlUHJvdmlk
ZXIqIHByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gbV9wcm92aWRlci5nZXQoKTsgfQogCi0gICAg
ICAgIFNvdXJjZUNvZGUgc3ViRXhwcmVzc2lvbih1bnNpZ25lZCBvcGVuQnJhY2UsIHVuc2lnbmVk
IGNsb3NlQnJhY2UsIGludCBmaXJzdExpbmUsIGludCBzdGFydENvbHVtbik7CisgICAgICAgIFNv
dXJjZUNvZGUgc3ViRXhwcmVzc2lvbih1bnNpZ25lZCBvcGVuQnJhY2UsIHVuc2lnbmVkIGNsb3Nl
QnJhY2UsIGludCBmaXJzdExpbmUsIGludCBzdGFydENvbHVtbikgY29uc3Q7CisKKyAgICAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNvdXJjZUNvZGUmIG90aGVyKSBjb25zdAorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gbV9maXJzdExpbmUgPT0gb3RoZXIubV9maXJzdExpbmUKKyAg
ICAgICAgICAgICAgICAmJiBtX3N0YXJ0Q29sdW1uID09IG90aGVyLm1fc3RhcnRDb2x1bW4KKyAg
ICAgICAgICAgICAgICAmJiBtX3Byb3ZpZGVyID09IG90aGVyLm1fcHJvdmlkZXIKKyAgICAgICAg
ICAgICAgICAmJiBtX3N0YXJ0T2Zmc2V0ID09IG90aGVyLm1fc3RhcnRPZmZzZXQKKyAgICAgICAg
ICAgICAgICAmJiBtX2VuZE9mZnNldCA9PSBvdGhlci5tX2VuZE9mZnNldDsKKyAgICAgICAgfQor
CisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTb3VyY2VDb2RlJiBvdGhlcikgY29uc3QK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgICAg
ICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBPcmRpbmFsTnVtYmVyIG1fZmlyc3RMaW5lOwpA
QCAtOTEsNyArMTA1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBTb3VyY2VD
b2RlKFN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc291cmNlLCBzb3VyY2VPcmlnaW4sIHVy
bCwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlwZSksIHN0YXJ0UG9zaXRpb24ubV9saW5lLm9uZUJh
c2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSk7CiAgICAgfQog
ICAgIAotICAgIGlubGluZSBTb3VyY2VDb2RlIFNvdXJjZUNvZGU6OnN1YkV4cHJlc3Npb24odW5z
aWduZWQgb3BlbkJyYWNlLCB1bnNpZ25lZCBjbG9zZUJyYWNlLCBpbnQgZmlyc3RMaW5lLCBpbnQg
c3RhcnRDb2x1bW4pCisgICAgaW5saW5lIFNvdXJjZUNvZGUgU291cmNlQ29kZTo6c3ViRXhwcmVz
c2lvbih1bnNpZ25lZCBvcGVuQnJhY2UsIHVuc2lnbmVkIGNsb3NlQnJhY2UsIGludCBmaXJzdExp
bmUsIGludCBzdGFydENvbHVtbikgY29uc3QKICAgICB7CiAgICAgICAgIHN0YXJ0Q29sdW1uICs9
IDE7IC8vIENvbnZlcnQgdG8gYmFzZSAxLgogICAgICAgICByZXR1cm4gU291cmNlQ29kZShSZWZQ
dHI8U291cmNlUHJvdmlkZXI+IHsgcHJvdmlkZXIoKSB9LCBvcGVuQnJhY2UsIGNsb3NlQnJhY2Ug
KyAxLCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNwcAkocmV2aXNpb24gMjMyOTUzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBEaXJlY3RBcmd1bWVudHMqIERpcmVjdEFyZ3Vt
ZW50czo6Y3JlYXRlCiAgICAgRGlyZWN0QXJndW1lbnRzKiByZXN1bHQgPSBjcmVhdGVVbmluaXRp
YWxpemVkKHZtLCBzdHJ1Y3R1cmUsIGxlbmd0aCwgY2FwYWNpdHkpOwogICAgIAogICAgIGZvciAo
dW5zaWduZWQgaSA9IGNhcGFjaXR5OyBpLS07KQotICAgICAgICByZXN1bHQtPnN0b3JhZ2UoKVtp
XS5jbGVhcigpOworICAgICAgICByZXN1bHQtPnN0b3JhZ2UoKVtpXS5zZXRVbmRlZmluZWQoKTsK
ICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343842</attachid>
            <date>2018-06-28 13:32:24 -0700</date>
            <delta_ts>2018-06-28 16:51:10 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>26706</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3RyeS1nZXQtYnktaWQtYmFzaWMuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvdHJ5LWdldC1ieS1pZC1iYXNpYy5q
cwkocmV2aXNpb24gMjMzMzE2KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvdHJ5LWdldC1i
eS1pZC1iYXNpYy5qcwkod29ya2luZyBjb3B5KQpAQCAtOCw3ICs4LDcgQEAgY29uc3QgY2hlY2sg
PSAoZ290LCBleHBlY3QpID0+IHsgaWYgKGdvdAogCiBjb25zdCBiZW5jaCA9IGYgPT4gewogICAg
IC8vIFJlLWNyZWF0ZSB0aGUgYnVpbHRpbiBlYWNoIHRpbWUsIHNvIGVhY2ggYmVuY2htYXJrIGdl
dHMgaXRzIG93biB2YWx1ZSBwcmVkaWN0aW9uLgotICAgIGNvbnN0IGZvb1BsdXNCYXIgPSBjcmVh
dGVCdWlsdGluKGAoZnVuY3Rpb24obykgeyByZXR1cm4gQHRyeUdldEJ5SWQobywgImZvbyIpICsg
QHRyeUdldEJ5SWQobywgImJhciIpOyB9KWApOworICAgIGNvbnN0IGZvb1BsdXNCYXIgPSBjcmVh
dGVCdWlsdGluKGAoZnVuY3Rpb24gKG8pIHsgcmV0dXJuIEB0cnlHZXRCeUlkKG8sICJmb28iKSAr
IEB0cnlHZXRCeUlkKG8sICJiYXIiKTsgfSlgKTsKICAgICBub0lubGluZShmb29QbHVzQmFyKTsK
ICAgICBmKGZvb1BsdXNCYXIpOwogfQpJbmRleDogSlNUZXN0cy9zdHJlc3MvYXJyYXktcHVzaC13
aXRoLWZvcmNlLWV4aXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvYXJyYXktcHVz
aC13aXRoLWZvcmNlLWV4aXQuanMJKHJldmlzaW9uIDIzMzMxNikKKysrIEpTVGVzdHMvc3RyZXNz
L2FycmF5LXB1c2gtd2l0aC1mb3JjZS1leGl0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NiBAQAogdmFyIGNyZWF0ZUJ1aWx0aW4gPSAkdm0uY3JlYXRlQnVpbHRpbjsKIAotdmFyIHRhcmdl
dCA9IGNyZWF0ZUJ1aWx0aW4oYChmdW5jdGlvbihhcnJheSkKK3ZhciB0YXJnZXQgPSBjcmVhdGVC
dWlsdGluKGAoZnVuY3Rpb24gKGFycmF5KQogewogICAgIGlmIChhcnJheSkgewogICAgICAgICBA
aWRXaXRoUHJvZmlsZShhcnJheSwgIlNwZWNPdGhlciIpLnB1c2goNDIpOwpJbmRleDogSlNUZXN0
cy9zdHJlc3MvaXMtY29uc3RydWN0b3IuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3Mv
aXMtY29uc3RydWN0b3IuanMJKHJldmlzaW9uIDIzMzMxNikKKysrIEpTVGVzdHMvc3RyZXNzL2lz
LWNvbnN0cnVjdG9yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQCBmdW5jdGlvbiBh
c3NlcnQoeCkgewogICAgICAgICB0aHJvdyBFcnJvcigiQmFkIik7CiB9CiAKLWxldCBpc0NvbnN0
cnVjdG9yID0gY3JlYXRlQnVpbHRpbigiKGZ1bmN0aW9uKGMpIHsgcmV0dXJuIEBpc0NvbnN0cnVj
dG9yKGMpOyB9KSIpOworbGV0IGlzQ29uc3RydWN0b3IgPSBjcmVhdGVCdWlsdGluKCIoZnVuY3Rp
b24gKGMpIHsgcmV0dXJuIEBpc0NvbnN0cnVjdG9yKGMpOyB9KSIpOwogCiAvLyBGdW5jdGlvbnMu
CiBhc3NlcnQoaXNDb25zdHJ1Y3Rvcihhc3NlcnQpKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3Rh
aWxDYWxsRm9yd2FyZEFyZ3VtZW50cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy90
YWlsQ2FsbEZvcndhcmRBcmd1bWVudHMuanMJKHJldmlzaW9uIDIzMzMxNikKKysrIEpTVGVzdHMv
c3RyZXNzL3RhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw3
ICsxLDcgQEAKIHZhciBjcmVhdGVCdWlsdGluID0gJHZtLmNyZWF0ZUJ1aWx0aW47CiAKIC8vIFRo
aXMgaXMgcHJldHR5IGJhZCBidXQgSSBuZWVkIGEgcHJpdmF0ZSBuYW1lLgotdmFyIHB1dEZ1bmNU
b1ByaXZhdGVOYW1lID0gY3JlYXRlQnVpbHRpbihgKGZ1bmN0aW9uKGZ1bmMpIHsgQGFycmF5SXRl
cmF0b3JJc0RvbmUgPSBmdW5jIH0pYCkKK3ZhciBwdXRGdW5jVG9Qcml2YXRlTmFtZSA9IGNyZWF0
ZUJ1aWx0aW4oYChmdW5jdGlvbiAoZnVuYykgeyBAYXJyYXlJdGVyYXRvcklzRG9uZSA9IGZ1bmMg
fSlgKQogcHV0RnVuY1RvUHJpdmF0ZU5hbWUoZnVuY3Rpb24gKGEsYikgeyByZXR1cm4gYjsgfSkK
IAogZnVuY3Rpb24gY3JlYXRlVGFpbENhbGxGb3J3YXJkaW5nRnVuY1dpdGgoYm9keSwgdGhpc1Zh
bHVlKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5bmNGcm9tU3lu
Y0l0ZXJhdG9yUHJvdG90eXBlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9Bc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUuanMJKHJldmlzaW9uIDIz
MzMxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0Zyb21TeW5jSXRl
cmF0b3JQcm90b3R5cGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw2ICsxNTEsOCBAQCBmdW5j
dGlvbiB0aHJvdyhleGNlcHRpb24pCiBAZ2xvYmFsUHJpdmF0ZQogZnVuY3Rpb24gY3JlYXRlQXN5
bmNGcm9tU3luY0l0ZXJhdG9yKHN5bmNJdGVyYXRvciwgbmV4dE1ldGhvZCkKIHsKKyAgICAidXNl
IHN0cmljdCI7CisKICAgICBpZiAoIUBpc09iamVjdChzeW5jSXRlcmF0b3IpKQogICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoJ09ubHkgb2JqZWN0cyBjYW4gYmUgd3JhcHBlZCBieSBhc3luYy1mcm9t
LXN5bmMgd3JhcHBlcicpOwogCkBAIC0xNjEsNiArMTYzLDggQEAgZnVuY3Rpb24gY3JlYXRlQXN5
bmNGcm9tU3luY0l0ZXJhdG9yKHN5bgogQGNvbnN0cnVjdG9yCiBmdW5jdGlvbiBBc3luY0Zyb21T
eW5jSXRlcmF0b3JDb25zdHJ1Y3RvcihzeW5jSXRlcmF0b3IsIG5leHRNZXRob2QpCiB7CisgICAg
InVzZSBzdHJpY3QiOworCiAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJzeW5jSXRl
cmF0b3IiLCBzeW5jSXRlcmF0b3IpOwogICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAi
bmV4dE1ldGhvZCIsIG5leHRNZXRob2QpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAJKHJldmlzaW9uIDIz
MzMxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJs
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw0MCArODUsMjAxIEBAIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGkKIAogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KQogewotICAg
IEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7Ci0gICAgUGFyc2VyRXJy
b3IgZXJyb3I7CisgICAgU3RyaW5nVmlldyB2aWV3ID0gc291cmNlLnZpZXcoKTsKKyAgICBSRUxF
QVNFX0FTU0VSVCghdmlldy5pc051bGwoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQodmlldy5pczhC
aXQoKSk7CisgICAgYXV0byogY2hhcmFjdGVycyA9IHZpZXcuY2hhcmFjdGVyczgoKTsKKyAgICBS
RUxFQVNFX0FTU0VSVCh2aWV3Lmxlbmd0aCgpID49IDE0KTsgLy8gc3RybGVuKCIoZnVuY3Rpb24o
KXt9KSIpID09IDE0CisgICAgUkVMRUFTRV9BU1NFUlQoY2hhcmFjdGVyc1swXSA9PSAgJygnKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChjaGFyYWN0ZXJzWzFdID09ICAnZicpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGNoYXJhY3RlcnNbMl0gPT0gICd1Jyk7CisgICAgUkVMRUFTRV9BU1NFUlQoY2hhcmFj
dGVyc1szXSA9PSAgJ24nKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjaGFyYWN0ZXJzWzRdID09ICAn
YycpOworICAgIFJFTEVBU0VfQVNTRVJUKGNoYXJhY3RlcnNbNV0gPT0gICd0Jyk7CisgICAgUkVM
RUFTRV9BU1NFUlQoY2hhcmFjdGVyc1s2XSA9PSAgJ2knKTsKKyAgICBSRUxFQVNFX0FTU0VSVChj
aGFyYWN0ZXJzWzddID09ICAnbycpOworICAgIFJFTEVBU0VfQVNTRVJUKGNoYXJhY3RlcnNbOF0g
PT0gICduJyk7CisgICAgUkVMRUFTRV9BU1NFUlQoY2hhcmFjdGVyc1s5XSA9PSAgJyAnKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChjaGFyYWN0ZXJzWzEwXSA9PSAnKCcpOworCisgICAgSlNUb2tlbkxv
Y2F0aW9uIHN0YXJ0OworICAgIHN0YXJ0LmxpbmUgPSAtMTsKKyAgICBzdGFydC5saW5lU3RhcnRP
ZmZzZXQgPSAtMTsKKyAgICBzdGFydC5zdGFydE9mZnNldCA9IDEwOworICAgIHN0YXJ0LmVuZE9m
ZnNldCA9IC0xOworCisgICAgSlNUb2tlbkxvY2F0aW9uIGVuZDsKKyAgICBlbmQubGluZSA9IDE7
CisgICAgZW5kLmxpbmVTdGFydE9mZnNldCA9IDA7CisgICAgZW5kLnN0YXJ0T2Zmc2V0ID0gMTsK
KyAgICBlbmQuZW5kT2Zmc2V0ID0gLTE7CisKKyAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IDEw
OyAvLyBzdHJsZW4oImZ1bmN0aW9uICgiKSA9PSAxMAorICAgIGludCBmdW5jdGlvbktleXdvcmRT
dGFydCA9IDE7IC8vIChmCisgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0ID0gMTA7CisgICAgaW50
IHBhcmFtZXRlcnNTdGFydCA9IDEwOworICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQgPSBmYWxz
ZTsKKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gZmFsc2U7CisKKyAg
ICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudDsKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGkgPSAx
MTsKKyAgICAgICAgdW5zaWduZWQgY29tbWFzID0gMDsKKyAgICAgICAgYm9vbCBzYXdPbmVQYXJh
bSA9IGZhbHNlOworICAgICAgICBib29sIGhhc1Jlc3RQYXJhbSA9IGZhbHNlOworICAgICAgICB3
aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgQVNTRVJUKGkgPCB2aWV3Lmxlbmd0aCgpKTsKKyAg
ICAgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldID09ICcpJykKKyAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0gPT0gJywnKQorICAgICAgICAgICAg
ICAgICsrY29tbWFzOworICAgICAgICAgICAgZWxzZSBpZiAoIUxleGVyPExDaGFyPjo6aXNXaGl0
ZVNwYWNlKGNoYXJhY3RlcnNbaV0pKQorICAgICAgICAgICAgICAgIHNhd09uZVBhcmFtID0gdHJ1
ZTsKKworICAgICAgICAgICAgaWYgKGkgKyAyIDwgdmlldy5sZW5ndGgoKSAmJiBjaGFyYWN0ZXJz
W2ldID09ICcuJyAmJiBjaGFyYWN0ZXJzW2kgKyAxXSA9PSAnLicgJiYgY2hhcmFjdGVyc1tpICsg
Ml0gPT0gJy4nKQorICAgICAgICAgICAgICAgIGhhc1Jlc3RQYXJhbSA9IHRydWU7CisKKyAgICAg
ICAgICAgICsraTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjb21tYXMpCisgICAgICAgICAg
ICBwYXJhbWV0ZXJDb3VudCA9IGNvbW1hcyArIDE7CisgICAgICAgIGVsc2UgaWYgKHNhd09uZVBh
cmFtKQorICAgICAgICAgICAgcGFyYW1ldGVyQ291bnQgPSAxOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBwYXJhbWV0ZXJDb3VudCA9IDA7CisKKyAgICAgICAgaWYgKGhhc1Jlc3RQYXJhbSkg
eworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocGFyYW1ldGVyQ291bnQpOworICAgICAgICAg
ICAgLS1wYXJhbWV0ZXJDb3VudDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHVuc2lnbmVkIGxp
bmVDb3VudCA9IDA7CisgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gMDsKKyAgICB1bnNpZ25lZCBv
ZmZzZXRPZkxhc3ROZXdsaW5lID0gMDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmll
dy5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldID09ICdcbicpIHsK
KyAgICAgICAgICAgICsrbGluZUNvdW50OworICAgICAgICAgICAgZW5kQ29sdW1uID0gMDsKKyAg
ICAgICAgICAgIG9mZnNldE9mTGFzdE5ld2xpbmUgPSBpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICsrZW5kQ29sdW1uOworCisgICAgICAgIGlmICghaXNJblN0cmljdENvbnRleHQgJiYg
KGNoYXJhY3RlcnNbaV0gPT0gJyInIHx8IGNoYXJhY3RlcnNbaV0gPT0gJ1wnJykpIHsKKyAgICAg
ICAgICAgIGlmIChpICsgMSArIHN0cmxlbigidXNlIHN0cmljdCIpIDw9IHZpZXcubGVuZ3RoKCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAoIW1lbWNtcChjaGFyYWN0ZXJzICsgaSArIDEsICJ1c2Ug
c3RyaWN0Iiwgc3RybGVuKCJ1c2Ugc3RyaWN0IikpKQorICAgICAgICAgICAgICAgICAgICBpc0lu
U3RyaWN0Q29udGV4dCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpbnQgY2xvc2VCcmFjZU9mZnNldEZyb21FbmQgPSAxOworICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgIGlmIChjaGFyYWN0ZXJzW3ZpZXcubGVuZ3RoKCkgLSBjbG9zZUJyYWNlT2Zmc2V0
RnJvbUVuZF0gPT0gJ30nKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICsrY2xvc2VCcmFj
ZU9mZnNldEZyb21FbmQ7CisgICAgfQorCisgICAgdW5zaWduZWQgcG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZUxpbmVTdGFydE9mZnNldCA9IDA7CisgICAgZm9yIChpbnQgaSA9IG9mZnNldE9mTGFz
dE5ld2xpbmUgLSAxOyB0cnVlOyApIHsKKyAgICAgICAgaWYgKGkgPCAwKQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldID09ICdcbicpIHsKKyAgICAgICAgICAg
IHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmVMaW5lU3RhcnRPZmZzZXQgPSBpICsgMTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIC0taTsKKyAgICB9CisKKyAgICBKU1Rl
eHRQb3NpdGlvbiB0aGVQb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOworICAgIHRoZVBvc2l0aW9u
QmVmb3JlTGFzdE5ld2xpbmUubGluZSA9IGxpbmVDb3VudDsKKyAgICB0aGVQb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lLm9mZnNldCA9IG9mZnNldE9mTGFzdE5ld2xpbmU7CisgICAgdGhlUG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZS5saW5lU3RhcnRPZmZzZXQgPSBwb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lTGluZVN0YXJ0T2Zmc2V0OworCisgICAgU291cmNlQ29kZSBuZXdTb3VyY2UgPSBzb3Vy
Y2Uuc3ViRXhwcmVzc2lvbigxMCwgdmlldy5sZW5ndGgoKSAtIGNsb3NlQnJhY2VPZmZzZXRGcm9t
RW5kLCAwLCAxMCk7CiAgICAgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9
IGNvbnN0cnVjdG9yS2luZCAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7Ci0gICAgSlNQYXJzZXJC
dWlsdGluTW9kZSBidWlsdGluTW9kZSA9IGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9y
ID8gSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiA6IEpTUGFyc2VyQnVpbHRpbk1vZGU6
OkJ1aWx0aW47CiAgICAgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCA9IGlzQnVpbHRpbkRlZmF1
bHRDbGFzc0NvbnN0cnVjdG9yID8gVW5saW5rZWROb3JtYWxGdW5jdGlvbiA6IFVubGlua2VkQnVp
bHRpbkZ1bmN0aW9uOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9
IHBhcnNlPFByb2dyYW1Ob2RlPigKLSAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwg
YnVpbHRpbk1vZGUsCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBKU1Bh
cnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwKLSAgICAgICAgJnBvc2l0aW9uQmVmb3JlTGFz
dE5ld2xpbmUsIGNvbnN0cnVjdG9yS2luZCk7Ci0KLSAgICBpZiAoIXByb2dyYW0pIHsKLSAgICAg
ICAgZGF0YUxvZygiRmF0YWwgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW4gZnVuY3Rpb24gJyIsIG5h
bWUuc3RyaW5nKCksICInOiAiLCBlcnJvci5tZXNzYWdlKCkpOwotICAgICAgICBDUkFTSCgpOwor
CisgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUgdGhlTWV0YWRhdGEoCisgICAgICAgIHN0YXJ0LCBl
bmQsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlv
bk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LAorICAgICAgICBpc0luU3RyaWN0Q29udGV4dCwg
Y29uc3RydWN0b3JLaW5kLCBjb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0b3JLaW5kOjpFeHRl
bmRzID8gU3VwZXJCaW5kaW5nOjpOZWVkZWQgOiBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwKKyAg
ICAgICAgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2Rl
LCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisKKyAgICB0aGVNZXRhZGF0YS5maW5p
c2hQYXJzaW5nKG5ld1NvdXJjZSwgSWRlbnRpZmllcigpLCBGdW5jdGlvbk1vZGU6OkZ1bmN0aW9u
RXhwcmVzc2lvbik7CisgICAgdGhlTWV0YWRhdGEub3ZlcnJpZGVOYW1lKG5hbWUpOworICAgIHRo
ZU1ldGFkYXRhLnNldEVuZFBvc2l0aW9uKHRoZVBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwor
CisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQgfHwgdHJ1ZSkgeworICAgICAgICBKU1RleHRQb3Np
dGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOworICAgICAgICBQYXJzZXJFcnJvciBlcnJv
cjsKKyAgICAgICAgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSA9IGlzQnVpbHRpbkRl
ZmF1bHRDbGFzc0NvbnN0cnVjdG9yID8gSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiA6
IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW47CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
cm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigKKyAgICAgICAgICAgICZ2
bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLAorICAgICAgICAgICAgSlNQYXJz
ZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU291
cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9y
LAorICAgICAgICAgICAgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUsIGNvbnN0cnVjdG9yS2lu
ZCk7CisKKyAgICAgICAgaWYgKCFwcm9ncmFtKSB7CisgICAgICAgICAgICBkYXRhTG9nKCJGYXRh
bCBlcnJvciBjb21waWxpbmcgYnVpbHRpbiBmdW5jdGlvbiAnIiwgbmFtZS5zdHJpbmcoKSwgIic6
ICIsIGVycm9yLm1lc3NhZ2UoKSk7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisK
KyAgICAgICAgU3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0
YXRlbWVudCgpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVtZW50KTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOworICAg
ICAgICBFeHByZXNzaW9uTm9kZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50
Tm9kZSo+KGV4cHJTdGF0ZW1lbnQpLT5leHByKCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGZ1
bmNFeHByKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHItPmlzRnVuY0V4cHJOb2Rl
KCkpOworICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbWV0YWRhdGEgPSBzdGF0aWNfY2Fz
dDxGdW5jRXhwck5vZGUqPihmdW5jRXhwciktPm1ldGFkYXRhKCk7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFwcm9ncmFtLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKKyAgICAgICAgCisgICAg
ICAgIG1ldGFkYXRhLT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQobWV0YWRhdGEpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChtZXRhZGF0YS0+aWRlbnQoKS5pc051bGwoKSk7CisgICAgICAgIAorICAgICAgICAvLyBUaGlz
IGZ1bmN0aW9uIGFzc3VtZXMgYW4gaW5wdXQgc3RyaW5nIHRoYXQgd291bGQgcmVzdWx0IGluIGEg
c2luZ2xlIGFub255bW91cyBmdW5jdGlvbiBleHByZXNzaW9uLgorICAgICAgICBtZXRhZGF0YS0+
c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1ldGFkYXRhKTsKKyAgICAgICAgbWV0YWRhdGEtPm92ZXJyaWRlTmFtZShuYW1l
KTsKKyAgICAgICAgbWV0YWRhdGEtPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmUpOworCisgICAgICAgIGF1dG8gZHVtcE1ldGFkYXRhID0gWyZdIChGdW5jdGlvbk1ldGFk
YXRhTm9kZSogbWV0YWRhdGEpIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSIpOworICAgICAgICAgICAgZGF0YUxvZyhzb3VyY2UudmlldygpKTsKKyAg
ICAgICAgICAgIGRhdGFMb2dMbigiPT09PT0iKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigqbWV0
YWRhdGEpOworICAgICAgICAgICAgZGF0YUxvZ0xuKCJtZXRhZGF0YS0+bV9zb3VyY2UucHJvdmlk
ZXI6ICIsIFJhd1BvaW50ZXIobWV0YWRhdGEtPm1fc291cmNlLnByb3ZpZGVyKCkpKTsKKyAgICAg
ICAgICAgIGRhdGFMb2dMbigibWV0YWRhdGEtPm1fc291cmNlLmZpcnN0TGluZTogIiwgbWV0YWRh
dGEtPm1fc291cmNlLmZpcnN0TGluZSgpLnplcm9CYXNlZEludCgpKTsKKyAgICAgICAgICAgIGRh
dGFMb2dMbigibWV0YWRhdGEtPm1fc291cmNlLnN0YXJ0Q29sdW1uOiAiLCBtZXRhZGF0YS0+bV9z
b3VyY2Uuc3RhcnRDb2x1bW4oKS56ZXJvQmFzZWRJbnQoKSk7CisgICAgICAgICAgICBkYXRhTG9n
TG4oIm1ldGFkYXRhLT5tX3NvdXJjZS5sZW5ndGg6ICIsIG1ldGFkYXRhLT5tX3NvdXJjZS5sZW5n
dGgoKSk7CisgICAgICAgICAgICBkYXRhTG9nTG4oIm1ldGFkYXRhLT5tX3NvdXJjZS5zdGFydE9m
ZnNldDogIiwgbWV0YWRhdGEtPm1fc291cmNlLnN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAg
ZGF0YUxvZ0xuKCJtZXRhZGF0YS0+bV9zb3VyY2UuZW5kT2Zmc2V0OiAiLCBtZXRhZGF0YS0+bV9z
b3VyY2UuZW5kT2Zmc2V0KCkpOworICAgICAgICAgICAgLy9kYXRhTG9nTG4oIm1fc291cmNlID09
IHNvdXJjZSIgLCBtZXRhZGF0YS0+bV9zb3VyY2UucHJvdmlkZXIoKSA9PSBzb3VyY2UucHJvdmlk
ZXIoKSAmJiBtZXRhZGF0YS0+bV9zb3VyY2UuZmlyc3RMaW5lKCkgPT0gc291cmNlLmZpcnN0TGlu
ZSgpICYmIG1ldGFkYXRhLT5tX3NvdXJjZS5zdGFydENvbHVtbigpID09IHNvdXJjZS5zdGFydENv
bHVtbigpICYmIG1ldGFkYXRhLT5tX3NvdXJjZS5sZW5ndGgoKSA9PSBzb3VyY2UubGVuZ3RoKCkg
JiYgbWV0YWRhdGEtPm1fc291cmNlLnN0YXJ0T2Zmc2V0KCkgPT0gc291cmNlLnN0YXJ0T2Zmc2V0
KCkgJiYgbWV0YWRhdGEtPm1fc291cmNlLmVuZE9mZnNldCgpID09IHNvdXJjZS5lbmRPZmZzZXQo
KSk7CisgICAgICAgICAgICBkYXRhTG9nTG4oInBvc2l0aW9uKCkubGluZSAiLCBtZXRhZGF0YS0+
cG9zaXRpb24oKS5saW5lKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigicG9zaXRpb24oKS5vZmZz
ZXQgIiwgbWV0YWRhdGEtPnBvc2l0aW9uKCkub2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2dM
bigicG9zaXRpb24oKS5saW5lU3RhcnRPZmZzZXQgIiwgbWV0YWRhdGEtPnBvc2l0aW9uKCkubGlu
ZVN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSIpOworICAgICAgICB9OworCisgICAgICAgIGlmICh0aGVNZXRhZGF0YSAhPSAqbWV0
YWRhdGEgfHwgcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSAhPSB0aGVQb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lKSB7CisgICAgICAgICAgICBkdW1wTWV0YWRhdGEobWV0YWRhdGEpOworICAgICAg
ICAgICAgZHVtcE1ldGFkYXRhKCZ0aGVNZXRhZGF0YSk7CisgICAgICAgICAgICBkYXRhTG9nTG4o
Im1ldGFkYXRhcyBhcmUgZXF1YWw6ICIsIHRoZU1ldGFkYXRhID09ICptZXRhZGF0YSk7CisgICAg
ICAgICAgICBkYXRhTG9nTG4oInBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUubGluZSAiLCBwb3Np
dGlvbkJlZm9yZUxhc3ROZXdsaW5lLmxpbmUpOworICAgICAgICAgICAgZGF0YUxvZ0xuKCJwb3Np
dGlvbkJlZm9yZUxhc3ROZXdsaW5lLm9mZnNldCAiLCBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5l
Lm9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nTG4oInBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUubGluZVN0YXJ0T2Zmc2V0ICIsIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUubGluZVN0YXJ0
T2Zmc2V0KTsKKworICAgICAgICAgICAgZGF0YUxvZ0xuKCJlbmRQb3NpdGlvbi5vZmZzZXQgIiwg
dGhlUG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZS5vZmZzZXQpOworICAgICAgICAgICAgZGF0YUxv
Z0xuKCJlbmRQb3NpdGlvbi5saW5lU3RhcnRPZmZzZXQgIiwgdGhlUG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZS5saW5lU3RhcnRPZmZzZXQpOworICAgICAgICB9CisKICAgICB9CiAKLSAgICBTdGF0
ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50KCk7Ci0g
ICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoZXhw
clN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBmdW5j
RXhwciA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oZXhwclN0YXRlbWVudCktPmV4
cHIoKTsKLSAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwcik7Ci0gICAgUkVMRUFTRV9BU1NFUlQo
ZnVuY0V4cHItPmlzRnVuY0V4cHJOb2RlKCkpOwotICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBt
ZXRhZGF0YSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGZ1bmNFeHByKS0+bWV0YWRhdGEo
KTsKLSAgICBSRUxFQVNFX0FTU0VSVCghcHJvZ3JhbS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7
Ci0gICAgCi0gICAgbWV0YWRhdGEtPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmUpOwotICAgIFJFTEVBU0VfQVNTRVJUKG1ldGFkYXRhKTsKLSAgICBSRUxFQVNFX0FTU0VS
VChtZXRhZGF0YS0+aWRlbnQoKS5pc051bGwoKSk7Ci0gICAgCi0gICAgLy8gVGhpcyBmdW5jdGlv
biBhc3N1bWVzIGFuIGlucHV0IHN0cmluZyB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhIHNpbmdsZSBh
bm9ueW1vdXMgZnVuY3Rpb24gZXhwcmVzc2lvbi4KLSAgICBtZXRhZGF0YS0+c2V0RW5kUG9zaXRp
b24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobWV0YWRh
dGEpOwotICAgIG1ldGFkYXRhLT5vdmVycmlkZU5hbWUobmFtZSk7CisKKwogICAgIFZhcmlhYmxl
RW52aXJvbm1lbnQgZHVtbXlURFpWYXJpYWJsZXM7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
cmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1Bh
cnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIGR1bW15VERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4
dFR5cGU6Ok5vbmUsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKKyAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgJnRoZU1ldGFkYXRhLCBraW5kLCBj
b25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIGR1bW15VERaVmFy
aWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0Nv
bnN0cnVjdG9yKTsKICAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxlOwogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT3BlcmF0aW9ucy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT3BlcmF0aW9ucy5q
cwkocmV2aXNpb24gMjMzMzE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0ds
b2JhbE9wZXJhdGlvbnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTYyLDEyICs2MiwxNSBAQCBmdW5j
dGlvbiBpc0RpY3Rpb25hcnkob2JqZWN0KQogQG92ZXJyaWRkZW5OYW1lPSJnZXQgW1N5bWJvbC5z
cGVjaWVzXSIKIGZ1bmN0aW9uIHNwZWNpZXNHZXR0ZXIoKQogeworICAgICJ1c2Ugc3RyaWN0IjsK
ICAgICByZXR1cm4gdGhpczsKIH0KIAogQGdsb2JhbFByaXZhdGUKIGZ1bmN0aW9uIHNwZWNpZXND
b25zdHJ1Y3RvcihvYmosIGRlZmF1bHRDb25zdHJ1Y3RvcikKIHsKKyAgICAidXNlIHN0cmljdCI7
CisKICAgICB2YXIgY29uc3RydWN0b3IgPSBvYmouY29uc3RydWN0b3I7CiAgICAgaWYgKGNvbnN0
cnVjdG9yID09PSBAdW5kZWZpbmVkKQogICAgICAgICByZXR1cm4gZGVmYXVsdENvbnN0cnVjdG9y
OwpAQCAtODQsNiArODcsOCBAQCBmdW5jdGlvbiBzcGVjaWVzQ29uc3RydWN0b3Iob2JqLCBkZWZh
dWx0CiBAZ2xvYmFsUHJpdmF0ZQogZnVuY3Rpb24gY29weURhdGFQcm9wZXJ0aWVzKHRhcmdldCwg
c291cmNlLCBleGNsdWRlZFNldCkKIHsKKyAgICAidXNlIHN0cmljdCI7CisKICAgICBpZiAoIUBp
c09iamVjdCh0YXJnZXQpKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoInRhcmdldCBuZWVkcyB0
byBiZSBhbiBvYmplY3QiKTsKIApAQCAtMTA5LDYgKzExNCw4IEBAIGZ1bmN0aW9uIGNvcHlEYXRh
UHJvcGVydGllcyh0YXJnZXQsIHNvdXIKIEBnbG9iYWxQcml2YXRlCiBmdW5jdGlvbiBjb3B5RGF0
YVByb3BlcnRpZXNOb0V4Y2x1c2lvbnModGFyZ2V0LCBzb3VyY2UpCiB7CisgICAgInVzZSBzdHJp
Y3QiOworCiAgICAgaWYgKCFAaXNPYmplY3QodGFyZ2V0KSkKICAgICAgICAgQHRocm93VHlwZUVy
cm9yKCJ0YXJnZXQgbmVlZHMgdG8gYmUgYW4gb2JqZWN0Iik7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlT3BlcmF0aW9ucy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZU9wZXJhdGlvbnMuanMJKHJldmlz
aW9uIDIzMzMxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlT3Bl
cmF0aW9ucy5qcwkod29ya2luZyBjb3B5KQpAQCAtODcsNiArODcsNyBAQCBmdW5jdGlvbiBuZXdQ
cm9taXNlQ2FwYWJpbGl0eShjb25zdHJ1Y3RvCiBAZ2xvYmFsUHJpdmF0ZQogZnVuY3Rpb24gbmV3
SGFuZGxlZFJlamVjdGVkUHJvbWlzZShlcnJvcikKIHsKKyAgICAidXNlIHN0cmljdCI7CiAgICAg
bGV0IHByb21pc2UgPSBAUHJvbWlzZS5AcmVqZWN0KGVycm9yKTsKICAgICBAcHV0QnlJZERpcmVj
dFByaXZhdGUocHJvbWlzZSwgInByb21pc2VJc0hhbmRsZWQiLCB0cnVlKTsKICAgICByZXR1cm4g
cHJvbWlzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWdFeHBQcm90
b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Jl
Z0V4cFByb3RvdHlwZS5qcwkocmV2aXNpb24gMjMzMzE2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL1JlZ0V4cFByb3RvdHlwZS5qcwkod29ya2luZyBjb3B5KQpAQCAtNjMsNyAr
NjMsMTAgQEAgZnVuY3Rpb24gcmVnRXhwRXhlYyhyZWdleHAsIHN0cikKIH0KIAogQGdsb2JhbFBy
aXZhdGUKLWZ1bmN0aW9uIGhhc09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclJlZ0V4cE1hdGNoKHJl
Z2V4cCkgeworZnVuY3Rpb24gaGFzT2JzZXJ2YWJsZVNpZGVFZmZlY3RzRm9yUmVnRXhwTWF0Y2go
cmVnZXhwKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKwogICAgIC8vIFRoaXMgaXMgYWNjZXNzZWQg
YnkgdGhlIFJlZ0V4cEV4ZWMgaW50ZXJuYWwgZnVuY3Rpb24uCiAgICAgbGV0IHJlZ2V4cEV4ZWMg
PSBAdHJ5R2V0QnlJZChyZWdleHAsICJleGVjIik7CiAgICAgaWYgKHJlZ2V4cEV4ZWMgIT09IEBy
ZWdFeHBCdWlsdGluRXhlYykKQEAgLTM1MSw3ICszNTQsMTAgQEAgZnVuY3Rpb24gc2VhcmNoKHN0
ckFyZykKIH0KIAogQGdsb2JhbFByaXZhdGUKLWZ1bmN0aW9uIGhhc09ic2VydmFibGVTaWRlRWZm
ZWN0c0ZvclJlZ0V4cFNwbGl0KHJlZ2V4cCkgeworZnVuY3Rpb24gaGFzT2JzZXJ2YWJsZVNpZGVF
ZmZlY3RzRm9yUmVnRXhwU3BsaXQocmVnZXhwKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKwogICAg
IC8vIFRoaXMgaXMgYWNjZXNzZWQgYnkgdGhlIFJlZ0V4cEV4ZWMgaW50ZXJuYWwgZnVuY3Rpb24u
CiAgICAgbGV0IHJlZ2V4cEV4ZWMgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJleGVjIik7CiAgICAg
aWYgKHJlZ2V4cEV4ZWMgIT09IEByZWdFeHBCdWlsdGluRXhlYykKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9TdHJpbmdQcm90b3R5cGUuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5qcwkocmV2aXNpb24g
MjMzMzE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlw
ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMTkxLDcgKzE5MSwxMCBAQCBmdW5jdGlvbiBwYWRFbmQo
bWF4TGVuZ3RoLyosIGZpbGxTdHJpbmcqCiB9CiAKIEBnbG9iYWxQcml2YXRlCi1mdW5jdGlvbiBo
YXNPYnNlcnZhYmxlU2lkZUVmZmVjdHNGb3JTdHJpbmdSZXBsYWNlKHJlZ2V4cCwgcmVwbGFjZXIp
IHsKK2Z1bmN0aW9uIGhhc09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclN0cmluZ1JlcGxhY2UocmVn
ZXhwLCByZXBsYWNlcikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKICAgICBpZiAocmVwbGFjZXIg
IT09IEByZWdFeHBQcm90b3R5cGVTeW1ib2xSZXBsYWNlKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAKQEAgLTIzNSw2ICsyMzgsOCBAQCBmdW5jdGlvbiByZXBsYWNlKHNlYXJjaCwgcmVwbGFj
ZSkKIEBnbG9iYWxQcml2YXRlCiBmdW5jdGlvbiBnZXREZWZhdWx0Q29sbGF0b3IoKQogeworICAg
ICJ1c2Ugc3RyaWN0IjsKKwogICAgIHJldHVybiBAZ2V0RGVmYXVsdENvbGxhdG9yLmNvbGxhdG9y
IHx8IChAZ2V0RGVmYXVsdENvbGxhdG9yLmNvbGxhdG9yID0gbmV3IEBDb2xsYXRvcigpKTsKIH0K
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCShyZXZpc2lv
biAyMzMzMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjE0LDYgKzIxNCwyOSBAQCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVu
Y3Rpb25NZXRhZGF0YU5vCiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKIH0KIAorRnVuY3Rpb25NZXRhZGF0YU5v
ZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAorICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnRMb2NhdGlvbiwgCisgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5z
aWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgCisgICAgaW50IGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQs
IGJvb2wgaXNJblN0cmljdENvbnRleHQsIAorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50
LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bikKKyAgICAgICAgOiBOb2RlKGVuZExvY2F0aW9uKQorICAgICAgICAsIG1fc3RhcnRDb2x1bW4o
c3RhcnRDb2x1bW4pCisgICAgICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQorICAgICAgICAs
IG1fZnVuY3Rpb25LZXl3b3JkU3RhcnQoZnVuY3Rpb25LZXl3b3JkU3RhcnQpCisgICAgICAgICwg
bV9mdW5jdGlvbk5hbWVTdGFydChmdW5jdGlvbk5hbWVTdGFydCkKKyAgICAgICAgLCBtX3BhcmFt
ZXRlcnNTdGFydChwYXJhbWV0ZXJzU3RhcnQpCisgICAgICAgICwgbV9zdGFydFN0YXJ0T2Zmc2V0
KHN0YXJ0TG9jYXRpb24uc3RhcnRPZmZzZXQpCisgICAgICAgICwgbV9wYXJhbWV0ZXJDb3VudChw
YXJhbWV0ZXJDb3VudCkKKyAgICAgICAgLCBtX3BhcnNlTW9kZShtb2RlKQorICAgICAgICAsIG1f
aXNJblN0cmljdENvbnRleHQoaXNJblN0cmljdENvbnRleHQpCisgICAgICAgICwgbV9zdXBlckJp
bmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCisgICAgICAgICwgbV9j
b25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCisg
ICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbikKK3sKKyAgICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpOworICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2lu
ZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7Cit9CisKIHZvaWQg
RnVuY3Rpb25NZXRhZGF0YU5vZGU6OmZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkK
IHsKICAgICBtX3NvdXJjZSA9IHNvdXJjZTsKQEAgLTIyNyw2ICsyNTAsNTUgQEAgdm9pZCBGdW5j
dGlvbk1ldGFkYXRhTm9kZTo6c2V0RW5kUG9zaXRpbwogICAgIG1fZW5kQ29sdW1uID0gcG9zaXRp
b24ub2Zmc2V0IC0gcG9zaXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogfQogCitib29sIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlOjpvcGVyYXRvcj09KGNvbnN0IEZ1bmN0aW9uTWV0YWRhdGFOb2RlJiBvdGhl
cikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pZGVudCA9PSBvdGhlci5tX2lkZW50CisgICAgICAg
ICYmIG1fZWNtYU5hbWUgPT0gb3RoZXIubV9lY21hTmFtZQorICAgICAgICAmJiBtX2luZmVycmVk
TmFtZSA9PSBvdGhlci5tX2luZmVycmVkTmFtZQorICAgICAgICAmJiBtX2Z1bmN0aW9uTW9kZT09
IG90aGVyLm1fZnVuY3Rpb25Nb2RlCisgICAgICAgICYmIG1fc3RhcnRDb2x1bW49PSBvdGhlci5t
X3N0YXJ0Q29sdW1uCisgICAgICAgICYmIG1fZW5kQ29sdW1uPT0gb3RoZXIubV9lbmRDb2x1bW4K
KyAgICAgICAgJiYgbV9mdW5jdGlvbktleXdvcmRTdGFydD09IG90aGVyLm1fZnVuY3Rpb25LZXl3
b3JkU3RhcnQKKyAgICAgICAgJiYgbV9mdW5jdGlvbk5hbWVTdGFydD09IG90aGVyLm1fZnVuY3Rp
b25OYW1lU3RhcnQKKyAgICAgICAgJiYgbV9wYXJhbWV0ZXJzU3RhcnQ9PSBvdGhlci5tX3BhcmFt
ZXRlcnNTdGFydAorICAgICAgICAmJiBtX3NvdXJjZT09IG90aGVyLm1fc291cmNlCisgICAgICAg
ICYmIG1fY2xhc3NTb3VyY2U9PSBvdGhlci5tX2NsYXNzU291cmNlCisgICAgICAgICYmIG1fc3Rh
cnRTdGFydE9mZnNldD09IG90aGVyLm1fc3RhcnRTdGFydE9mZnNldAorICAgICAgICAmJiBtX3Bh
cmFtZXRlckNvdW50PT0gb3RoZXIubV9wYXJhbWV0ZXJDb3VudAorICAgICAgICAmJiBtX2xhc3RM
aW5lPT0gb3RoZXIubV9sYXN0TGluZQorICAgICAgICAmJiBtX3BhcnNlTW9kZT09IG90aGVyLm1f
cGFyc2VNb2RlCisgICAgICAgICYmIG1faXNJblN0cmljdENvbnRleHQgPT0gb3RoZXIubV9pc0lu
U3RyaWN0Q29udGV4dCAKKyAgICAgICAgJiYgbV9zdXBlckJpbmRpbmcgPT0gb3RoZXIubV9zdXBl
ckJpbmRpbmcgCisgICAgICAgICYmIG1fY29uc3RydWN0b3JLaW5kID09IG90aGVyLm1fY29uc3Ry
dWN0b3JLaW5kIAorICAgICAgICAmJiBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID09
IG90aGVyLm1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24KKyAgICAgICAgJiYgbV9wb3Np
dGlvbiA9PSBvdGhlci5tX3Bvc2l0aW9uOworfQorCit2b2lkIEZ1bmN0aW9uTWV0YWRhdGFOb2Rl
OjpkdW1wKFByaW50U3RyZWFtJiBzdHJlYW0pIGNvbnN0Cit7CisgICAgc3RyZWFtLnByaW50bG4o
Im1faWRlbnQgIiwgbV9pZGVudCk7CisgICAgc3RyZWFtLnByaW50bG4oIm1fZWNtYU5hbWUgIiwg
bV9lY21hTmFtZSk7CisgICAgc3RyZWFtLnByaW50bG4oIm1faW5mZXJyZWROYW1lICIsIG1faW5m
ZXJyZWROYW1lKTsKKyAgICBzdHJlYW0ucHJpbnRsbigibV9mdW5jdGlvbk1vZGUgIiwgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KG1fZnVuY3Rpb25Nb2RlKSk7CisgICAgc3RyZWFtLnByaW50bG4oIm1f
c3RhcnRDb2x1bW4gIiwgbV9zdGFydENvbHVtbiApOworICAgIHN0cmVhbS5wcmludGxuKCJtX2Vu
ZENvbHVtbiAiLG1fZW5kQ29sdW1uICk7CisgICAgc3RyZWFtLnByaW50bG4oIm1fZnVuY3Rpb25L
ZXl3b3JkU3RhcnQgIixtX2Z1bmN0aW9uS2V5d29yZFN0YXJ0ICk7CisgICAgc3RyZWFtLnByaW50
bG4oIm1fZnVuY3Rpb25OYW1lU3RhcnQgIixtX2Z1bmN0aW9uTmFtZVN0YXJ0ICk7CisgICAgc3Ry
ZWFtLnByaW50bG4oIm1fcGFyYW1ldGVyc1N0YXJ0ICIsIG1fcGFyYW1ldGVyc1N0YXJ0ICk7Cisg
ICAgc3RyZWFtLnByaW50bG4oIm1fY2xhc3NTb3VyY2UuaXNOdWxsKCkgIiwgbV9jbGFzc1NvdXJj
ZS5pc051bGwoKSk7CisgICAgc3RyZWFtLnByaW50bG4oIm1fc3RhcnRTdGFydE9mZnNldCAiLCBt
X3N0YXJ0U3RhcnRPZmZzZXQpOworICAgIHN0cmVhbS5wcmludGxuKCJtX3BhcmFtZXRlckNvdW50
ICIsIG1fcGFyYW1ldGVyQ291bnQpOworICAgIHN0cmVhbS5wcmludGxuKCJtX2xhc3RMaW5lICIs
IG1fbGFzdExpbmUpOworICAgIHN0cmVhbS5wcmludGxuKCJtX3BhcnNlTW9kZSAiLHN0YXRpY19j
YXN0PHVpbnQzMl90PihtX3BhcnNlTW9kZSkpOworICAgIHN0cmVhbS5wcmludGxuKCJtX2lzSW5T
dHJpY3RDb250ZXh0ICIsIG1faXNJblN0cmljdENvbnRleHQpOworICAgIHN0cmVhbS5wcmludGxu
KCJtX3N1cGVyQmluZGluZyAiLCBtX3N1cGVyQmluZGluZyk7CisgICAgc3RyZWFtLnByaW50bG4o
Im1fY29uc3RydWN0b3JLaW5kICIsIG1fY29uc3RydWN0b3JLaW5kKTsKKyAgICBzdHJlYW0ucHJp
bnRsbigibV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiAiLCBtX2lzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKTsKKyAgICBzdHJlYW0ucHJpbnRsbigicG9zaXRpb24oKS5saW5lICIs
IHBvc2l0aW9uKCkubGluZSk7CisgICAgc3RyZWFtLnByaW50bG4oInBvc2l0aW9uKCkub2Zmc2V0
ICIsIHBvc2l0aW9uKCkub2Zmc2V0KTsKKyAgICBzdHJlYW0ucHJpbnRsbigicG9zaXRpb24oKS5s
aW5lU3RhcnRPZmZzZXQgIiwgcG9zaXRpb24oKS5saW5lU3RhcnRPZmZzZXQpOworfQorCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25Ob2RlIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKIEZ1bmN0aW9uTm9kZTo6RnVuY3Rpb25Ob2RlKFBhcnNlckFyZW5h
JiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5z
aWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhcmlhYmxlRW52aXJv
bm1lbnQmIHZhckVudmlyb25tZW50LCBGdW5jdGlvblN0YWNrJiYgZnVuY1N0YWNrLCBWYXJpYWJs
ZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzLCBVbmlxdWVkU3RyaW5nSW1wbFB0clNldCYm
IHNsb3BweU1vZGVIb2lzdGVkRnVuY3Rpb25zLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRl
cnMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywg
SW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzIGlubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0
dXJlcywgaW50IG51bUNvbnN0YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4mJikKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHJldmlzaW9uIDIzMzMxNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTk4
OCw2ICsxOTg4LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaW50IGZ1bmN0aW9u
TmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAK
ICAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCB1bnNpZ25lZCBwYXJh
bWV0ZXJDb3VudCwKICAgICAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKAorICAg
ICAgICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBlbmQsIAorICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVu
ZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKKyAgICAgICAgICAgIGludCBmdW5j
dGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4
dCwgCisgICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgdW5zaWduZWQg
cGFyYW1ldGVyQ291bnQsCisgICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworCisgICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2Rl
JiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CiAgICAgICAgIApAQCAtMjAyOCw3
ICsyMDM2LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAgICAgICAgIHVuc2lnbmVk
IGxhc3RMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TGluZTsgfQogCi0gICAgcHJvdGVjdGVk
OgorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRnVuY3Rpb25NZXRhZGF0YU5vZGUmKSBj
b25zdDsKKyAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZ1bmN0aW9uTWV0YWRhdGFOb2Rl
JiBvdGhlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOworICAgICAgICB9CisKKyAgICBwdWJsaWM6CiAgICAgICAgIElkZW50aWZpZXIgbV9p
ZGVudDsKICAgICAgICAgSWRlbnRpZmllciBtX2VjbWFOYW1lOwogICAgICAgICBJZGVudGlmaWVy
IG1faW5mZXJyZWROYW1lOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJUb2tlbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlclRva2Vucy5oCShyZXZpc2lvbiAyMzMzMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlclRva2Vucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNiArMjAyLDE3IEBA
IHN0cnVjdCBKU1RleHRQb3NpdGlvbiB7CiAKICAgICBvcGVyYXRvciBpbnQoKSBjb25zdCB7IHJl
dHVybiBvZmZzZXQ7IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBKU1RleHRQb3NpdGlv
biYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbGluZSA9PSBvdGhlci5saW5l
CisgICAgICAgICAgICAmJiBvZmZzZXQgPT0gb3RoZXIub2Zmc2V0CisgICAgICAgICAgICAmJiBs
aW5lU3RhcnRPZmZzZXQgPT0gb3RoZXIubGluZVN0YXJ0T2Zmc2V0OworICAgIH0KKyAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgSlNUZXh0UG9zaXRpb24mIG90aGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKwogICAgIGludCBsaW5lOwog
ICAgIGludCBvZmZzZXQ7CiAgICAgaW50IGxpbmVTdGFydE9mZnNldDsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCShyZXZpc2lvbiAyMzMzMTYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNzksNyArNzksMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgU291cmNlUHJvdmlk
ZXIqIHByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gbV9wcm92aWRlci5nZXQoKTsgfQogCi0gICAg
ICAgIFNvdXJjZUNvZGUgc3ViRXhwcmVzc2lvbih1bnNpZ25lZCBvcGVuQnJhY2UsIHVuc2lnbmVk
IGNsb3NlQnJhY2UsIGludCBmaXJzdExpbmUsIGludCBzdGFydENvbHVtbik7CisgICAgICAgIFNv
dXJjZUNvZGUgc3ViRXhwcmVzc2lvbih1bnNpZ25lZCBvcGVuQnJhY2UsIHVuc2lnbmVkIGNsb3Nl
QnJhY2UsIGludCBmaXJzdExpbmUsIGludCBzdGFydENvbHVtbikgY29uc3Q7CisKKyAgICAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNvdXJjZUNvZGUmIG90aGVyKSBjb25zdAorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gbV9maXJzdExpbmUgPT0gb3RoZXIubV9maXJzdExpbmUKKyAg
ICAgICAgICAgICAgICAmJiBtX3N0YXJ0Q29sdW1uID09IG90aGVyLm1fc3RhcnRDb2x1bW4KKyAg
ICAgICAgICAgICAgICAmJiBtX3Byb3ZpZGVyID09IG90aGVyLm1fcHJvdmlkZXIKKyAgICAgICAg
ICAgICAgICAmJiBtX3N0YXJ0T2Zmc2V0ID09IG90aGVyLm1fc3RhcnRPZmZzZXQKKyAgICAgICAg
ICAgICAgICAmJiBtX2VuZE9mZnNldCA9PSBvdGhlci5tX2VuZE9mZnNldDsKKyAgICAgICAgfQor
CisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTb3VyY2VDb2RlJiBvdGhlcikgY29uc3QK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgICAg
ICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBPcmRpbmFsTnVtYmVyIG1fZmlyc3RMaW5lOwpA
QCAtOTEsNyArMTA1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBTb3VyY2VD
b2RlKFN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc291cmNlLCBzb3VyY2VPcmlnaW4sIHVy
bCwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlwZSksIHN0YXJ0UG9zaXRpb24ubV9saW5lLm9uZUJh
c2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSk7CiAgICAgfQog
ICAgIAotICAgIGlubGluZSBTb3VyY2VDb2RlIFNvdXJjZUNvZGU6OnN1YkV4cHJlc3Npb24odW5z
aWduZWQgb3BlbkJyYWNlLCB1bnNpZ25lZCBjbG9zZUJyYWNlLCBpbnQgZmlyc3RMaW5lLCBpbnQg
c3RhcnRDb2x1bW4pCisgICAgaW5saW5lIFNvdXJjZUNvZGUgU291cmNlQ29kZTo6c3ViRXhwcmVz
c2lvbih1bnNpZ25lZCBvcGVuQnJhY2UsIHVuc2lnbmVkIGNsb3NlQnJhY2UsIGludCBmaXJzdExp
bmUsIGludCBzdGFydENvbHVtbikgY29uc3QKICAgICB7CiAgICAgICAgIHN0YXJ0Q29sdW1uICs9
IDE7IC8vIENvbnZlcnQgdG8gYmFzZSAxLgogICAgICAgICByZXR1cm4gU291cmNlQ29kZShSZWZQ
dHI8U291cmNlUHJvdmlkZXI+IHsgcHJvdmlkZXIoKSB9LCBvcGVuQnJhY2UsIGNsb3NlQnJhY2Ug
KyAxLCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1uKTsK
</data>
<flag name="commit-queue"
          id="361919"
          type_id="3"
          status="-"
          setter="ews-watchlist"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343871</attachid>
            <date>2018-06-28 16:51:10 -0700</date>
            <delta_ts>2018-06-29 12:12:01 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>33435</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzMzMzgpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI4IEBACisyMDE4LTA2LTI4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFdlIHNob3VsZG4ndCByZWN1cnNlIGludG8gdGhlIHBhcnNlciB3aGVu
IGdhdGhlcmluZyBtZXRhZGF0YSBhYm91dCB2YXJpb3VzIGZ1bmN0aW9uIG9mZnNldHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDA3NAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzcxNjU4OTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvdHJ5LWdldC1ieS1pZC1iYXNp
Yy5qczoKKyAgICAgICAgKGNvbnN0LmJlbmNoLmYuY29uc3QuZm9vUGx1c0Jhci5jcmVhdGVCdWls
dGluKToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvdHJ5LWdldC1ieS1pZC1wb2x5bW9ycGhp
Yy5qczoKKyAgICAgICAgKGZvb1BsdXNCYXIuY3JlYXRlQnVpbHRpbik6CisgICAgICAgICogc3Ry
ZXNzL2FycmF5LXB1c2gtd2l0aC1mb3JjZS1leGl0LmpzOgorICAgICAgICAqIHN0cmVzcy9kb250
LWNyYXNoLW9uLXN0YWNrLW92ZXJmbG93LXdoZW4tcGFyc2luZy1idWlsdGluLmpzOiBBZGRlZC4K
KyAgICAgICAgKGYpOgorICAgICAgICAqIHN0cmVzcy9kb250LWNyYXNoLW9uLXN0YWNrLW92ZXJm
bG93LXdoZW4tcGFyc2luZy1kZWZhdWx0LWNvbnN0cnVjdG9yLmpzOiBBZGRlZC4KKyAgICAgICAg
KHJ1bk5lYXJTdGFja0xpbWl0LnQpOgorICAgICAgICAocnVuTmVhclN0YWNrTGltaXQpOgorICAg
ICAgICAoX19mXzY5MC5zd2l0Y2guY2FzZS4xLnN3aXRjaC5jYXRjaC5wcm90b3R5cGUuY2F0Y2gp
OgorICAgICAgICAocHJvdG90eXBlLnJ1bk5lYXJTdGFja0xpbWl0KToKKyAgICAgICAgKHByb3Rv
dHlwZS5yZXR1cm4uX19mXzY5MCk6CisgICAgICAgICogc3RyZXNzL2lzLWNvbnN0cnVjdG9yLmpz
OgorICAgICAgICAqIHN0cmVzcy90YWlsQ2FsbEZvcndhcmRBcmd1bWVudHMuanM6CisgICAgICAg
IChwdXRGdW5jVG9Qcml2YXRlTmFtZS5jcmVhdGVCdWlsdGluKToKKwogMjAxOC0wNi0yNyAgTWFy
ayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgREZHJ3MgY29tcGlsZVJlYWxs
b2NhdGVQcm9wZXJ0eVN0b3JhZ2UoKSBhbmQgY29tcGlsZUFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
KCkgc2xvdyBwYXRocyBzaG91bGQgYWxzbyBjbGVhciB1bnVzZWQgcHJvcGVydGllcy4KSW5kZXg6
IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3RyeS1nZXQtYnktaWQtYmFzaWMuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvdHJ5LWdldC1ieS1pZC1iYXNpYy5qcwkocmV2
aXNpb24gMjMzMzE2KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvdHJ5LWdldC1ieS1pZC1i
YXNpYy5qcwkod29ya2luZyBjb3B5KQpAQCAtOCw3ICs4LDcgQEAgY29uc3QgY2hlY2sgPSAoZ290
LCBleHBlY3QpID0+IHsgaWYgKGdvdAogCiBjb25zdCBiZW5jaCA9IGYgPT4gewogICAgIC8vIFJl
LWNyZWF0ZSB0aGUgYnVpbHRpbiBlYWNoIHRpbWUsIHNvIGVhY2ggYmVuY2htYXJrIGdldHMgaXRz
IG93biB2YWx1ZSBwcmVkaWN0aW9uLgotICAgIGNvbnN0IGZvb1BsdXNCYXIgPSBjcmVhdGVCdWls
dGluKGAoZnVuY3Rpb24obykgeyByZXR1cm4gQHRyeUdldEJ5SWQobywgImZvbyIpICsgQHRyeUdl
dEJ5SWQobywgImJhciIpOyB9KWApOworICAgIGNvbnN0IGZvb1BsdXNCYXIgPSBjcmVhdGVCdWls
dGluKGAoZnVuY3Rpb24gKG8pIHsgcmV0dXJuIEB0cnlHZXRCeUlkKG8sICJmb28iKSArIEB0cnlH
ZXRCeUlkKG8sICJiYXIiKTsgfSlgKTsKICAgICBub0lubGluZShmb29QbHVzQmFyKTsKICAgICBm
KGZvb1BsdXNCYXIpOwogfQpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvdHJ5LWdldC1i
eS1pZC1wb2x5bW9ycGhpYy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy90cnktZ2V0LWJ5LWlkLXBvbHltb3JwaGljLmpzCShyZXZpc2lvbiAyMzMzMTYpCisrKyBKU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy90cnktZ2V0LWJ5LWlkLXBvbHltb3JwaGljLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC02LDcgKzYsNyBAQCB2YXIgaXQgPSAxZTU7CiAKIGNvbnN0IGNoZWNrID0gKGdv
dCwgZXhwZWN0KSA9PiB7IGlmIChnb3QgIT0gZXhwZWN0KSB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQgZ290ICIgKyBnb3QgKyAiIGV4cGVjdGVkICIgKyBleHBlY3Q7IH07CiAKLWZvb1BsdXNCYXIg
PSBjcmVhdGVCdWlsdGluKGAoZnVuY3Rpb24obykgeyByZXR1cm4gQHRyeUdldEJ5SWQobywgImZv
byIpICsgQHRyeUdldEJ5SWQobywgImJhciIpOyB9KWApOworZm9vUGx1c0JhciA9IGNyZWF0ZUJ1
aWx0aW4oYChmdW5jdGlvbiAobykgeyByZXR1cm4gQHRyeUdldEJ5SWQobywgImZvbyIpICsgQHRy
eUdldEJ5SWQobywgImJhciIpOyB9KWApOwogbm9JbmxpbmUoZm9vUGx1c0Jhcik7CiAKIGNvbnN0
IGJlbmNoID0gZiA9PiB7IGYoKTsgfQpJbmRleDogSlNUZXN0cy9zdHJlc3MvYXJyYXktcHVzaC13
aXRoLWZvcmNlLWV4aXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvYXJyYXktcHVz
aC13aXRoLWZvcmNlLWV4aXQuanMJKHJldmlzaW9uIDIzMzMxNikKKysrIEpTVGVzdHMvc3RyZXNz
L2FycmF5LXB1c2gtd2l0aC1mb3JjZS1leGl0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NiBAQAogdmFyIGNyZWF0ZUJ1aWx0aW4gPSAkdm0uY3JlYXRlQnVpbHRpbjsKIAotdmFyIHRhcmdl
dCA9IGNyZWF0ZUJ1aWx0aW4oYChmdW5jdGlvbihhcnJheSkKK3ZhciB0YXJnZXQgPSBjcmVhdGVC
dWlsdGluKGAoZnVuY3Rpb24gKGFycmF5KQogewogICAgIGlmIChhcnJheSkgewogICAgICAgICBA
aWRXaXRoUHJvZmlsZShhcnJheSwgIlNwZWNPdGhlciIpLnB1c2goNDIpOwpJbmRleDogSlNUZXN0
cy9zdHJlc3MvZG9udC1jcmFzaC1vbi1zdGFjay1vdmVyZmxvdy13aGVuLXBhcnNpbmctYnVpbHRp
bi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9kb250LWNyYXNoLW9uLXN0YWNrLW92
ZXJmbG93LXdoZW4tcGFyc2luZy1idWlsdGluLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMv
c3RyZXNzL2RvbnQtY3Jhc2gtb24tc3RhY2stb3ZlcmZsb3ctd2hlbi1wYXJzaW5nLWJ1aWx0aW4u
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorLy9AIHJ1bkRlZmF1bHQoIi0tbWF4
UGVyVGhyZWFkU3RhY2tVc2FnZT0xMDAwMCIsICItLXJlc2VydmVkWm9uZVNpemU9MCIpCisKK2Z1
bmN0aW9uIGYoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgZigpOworICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIE1hcC5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKCcn
LCB7fSk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHt9CisgICAgfQorfQorCitmKCkKSW5kZXg6IEpT
VGVzdHMvc3RyZXNzL2RvbnQtY3Jhc2gtb24tc3RhY2stb3ZlcmZsb3ctd2hlbi1wYXJzaW5nLWRl
ZmF1bHQtY29uc3RydWN0b3IuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvZG9udC1j
cmFzaC1vbi1zdGFjay1vdmVyZmxvdy13aGVuLXBhcnNpbmctZGVmYXVsdC1jb25zdHJ1Y3Rvci5q
cwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9kb250LWNyYXNoLW9uLXN0YWNrLW92
ZXJmbG93LXdoZW4tcGFyc2luZy1kZWZhdWx0LWNvbnN0cnVjdG9yLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMzEgQEAKKy8vQCBydW5EZWZhdWx0KCItLW1heFBlclRocmVhZFN0YWNrVXNh
Z2U9MTAwMDAiLCAiLS1yZXNlcnZlZFpvbmVTaXplPTAiKQorCitmdW5jdGlvbiBydW5OZWFyU3Rh
Y2tMaW1pdChmKSB7CisgICAgZnVuY3Rpb24gdCgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIHJldHVybiB0KCk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHJldHVy
biBmKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHQoKQorfQorZnVuY3Rpb24gX19m
XzY5MCgpIHsKKyAgICBzd2l0Y2ggKF9fdl8yOTUxKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAg
ICAgICAgIHN3aXRjaCAoX192XzI5NTIpIHsKKyAgICAgICAgICAgICAgICBjYXNlIDQzNDoKKyAg
ICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoX192
XzMzMjIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3IGNsYXNzIGV4dGVuZHMgKGNsYXNzIHt9LCB7fSkge30oKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICB9Cit9CitydW5OZWFyU3RhY2tMaW1pdCgoKSA9PiB7CisgICAg
cmV0dXJuIF9fZl82OTAoKTsKK30pCit7Cit9OwpJbmRleDogSlNUZXN0cy9zdHJlc3MvaXMtY29u
c3RydWN0b3IuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvaXMtY29uc3RydWN0b3Iu
anMJKHJldmlzaW9uIDIzMzMxNikKKysrIEpTVGVzdHMvc3RyZXNzL2lzLWNvbnN0cnVjdG9yLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQCBmdW5jdGlvbiBhc3NlcnQoeCkgewogICAg
ICAgICB0aHJvdyBFcnJvcigiQmFkIik7CiB9CiAKLWxldCBpc0NvbnN0cnVjdG9yID0gY3JlYXRl
QnVpbHRpbigiKGZ1bmN0aW9uKGMpIHsgcmV0dXJuIEBpc0NvbnN0cnVjdG9yKGMpOyB9KSIpOwor
bGV0IGlzQ29uc3RydWN0b3IgPSBjcmVhdGVCdWlsdGluKCIoZnVuY3Rpb24gKGMpIHsgcmV0dXJu
IEBpc0NvbnN0cnVjdG9yKGMpOyB9KSIpOwogCiAvLyBGdW5jdGlvbnMuCiBhc3NlcnQoaXNDb25z
dHJ1Y3Rvcihhc3NlcnQpKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3RhaWxDYWxsRm9yd2FyZEFy
Z3VtZW50cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy90YWlsQ2FsbEZvcndhcmRB
cmd1bWVudHMuanMJKHJldmlzaW9uIDIzMzMxNikKKysrIEpTVGVzdHMvc3RyZXNzL3RhaWxDYWxs
Rm9yd2FyZEFyZ3VtZW50cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIHZhciBj
cmVhdGVCdWlsdGluID0gJHZtLmNyZWF0ZUJ1aWx0aW47CiAKIC8vIFRoaXMgaXMgcHJldHR5IGJh
ZCBidXQgSSBuZWVkIGEgcHJpdmF0ZSBuYW1lLgotdmFyIHB1dEZ1bmNUb1ByaXZhdGVOYW1lID0g
Y3JlYXRlQnVpbHRpbihgKGZ1bmN0aW9uKGZ1bmMpIHsgQGFycmF5SXRlcmF0b3JJc0RvbmUgPSBm
dW5jIH0pYCkKK3ZhciBwdXRGdW5jVG9Qcml2YXRlTmFtZSA9IGNyZWF0ZUJ1aWx0aW4oYChmdW5j
dGlvbiAoZnVuYykgeyBAYXJyYXlJdGVyYXRvcklzRG9uZSA9IGZ1bmMgfSlgKQogcHV0RnVuY1Rv
UHJpdmF0ZU5hbWUoZnVuY3Rpb24gKGEsYikgeyByZXR1cm4gYjsgfSkKIAogZnVuY3Rpb24gY3Jl
YXRlVGFpbENhbGxGb3J3YXJkaW5nRnVuY1dpdGgoYm9keSwgdGhpc1ZhbHVlKSB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzMxNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NyBAQAorMjAxOC0w
Ni0yOCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBXZSBzaG91
bGRuJ3QgcmVjdXJzZSBpbnRvIHRoZSBwYXJzZXIgd2hlbiBnYXRoZXJpbmcgbWV0YWRhdGEgYWJv
dXQgdmFyaW91cyBmdW5jdGlvbiBvZmZzZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODQwNzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM3MTY1
ODk3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBy
aW9yIHRvIHRoaXMgcGF0Y2gsIHdoZW4gd2UgbWFkZSBhIGJ1aWx0aW4sIHdlIGhhZCB0byBtYWtl
IGFuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlCisgICAgICAgIGZvciB0aGF0IGJ1aWx0aW4u
IFRoaXMgcmVxdWlyZWQgY2FsbGluZyBpbnRvIHRoZSBwYXJzZXIuIEhvd2V2ZXIsIHRoZSBwYXJz
ZXIKKyAgICAgICAgbWF5IHRocm93IGEgc3RhY2sgb3ZlcmZsb3cuIFdlIHdlcmUgbm90IGFibGUg
dG8gcmVjb3ZlciBmcm9tIHRoYXQuIFRoZSBvbmx5CisgICAgICAgIHJlYXNvbiB3ZSBjYWxsZWQg
aW50byB0aGUgcGFyc2VyIGhlcmUgaXMgdGhhdCB3ZSB3ZXJlIGdhdGhlcmluZyB0ZXh0IG9mZnNl
dHMKKyAgICAgICAgYW5kIHZhcmlvdXMgbWV0YWRhdGEgZm9yIHRoaW5ncyBpbiB0aGUgYnVpbHRp
biBmdW5jdGlvbi4gVGhpcyBwYXRjaCB3cml0ZXMgYQorICAgICAgICBtaW5pIHBhcnNlciB0aGF0
IGZpZ3VyZXMgdGhpcyBpbmZvcm1hdGlvbiBvdXQgd2l0aG91dCBjYWxsaW5nIGludG8gdGhlIGZ1
bGwKKyAgICAgICAgcGFyc2VyLiAoSSd2ZSBhbHNvIGFkZGVkIGEgZGVidWcgYXNzZXJ0IHRoYXQg
dmVyaWZpZXMgdGhlIG1pbmkgcGFyc2VyIHN0YXlzIGluCisgICAgICAgIHN5bmMgd2l0aCB0aGUg
ZnVsbCBwYXJzZXIuKSBUaGUgcmVzdWx0IG9mIHRoaXMgaXMgdGhhdCBCdWlsdGluRXhlY3V0Ymxl
czo6Y3JlYXRlRXhlY3V0YWJsZQorICAgICAgICBhbHdheXMgc3VjY2VlZHMuCisKKyAgICAgICAg
KiBidWlsdGlucy9Bc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUuanM6CisgICAgICAgIChn
bG9iYWxQcml2YXRlLmNyZWF0ZUFzeW5jRnJvbVN5bmNJdGVyYXRvcik6CisgICAgICAgIChnbG9i
YWxQcml2YXRlLkFzeW5jRnJvbVN5bmNJdGVyYXRvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBi
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhl
Y3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ1aWx0aW5zL0dsb2JhbE9w
ZXJhdGlvbnMuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmdldHRlci5vdmVycmlkZGVuTmFt
ZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zcGVjaWVzR2V0dGVyKToKKyAgICAgICAgKGdsb2JhbFBy
aXZhdGUuc3BlY2llc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuY29weURh
dGFQcm9wZXJ0aWVzKToKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuY29weURhdGFQcm9wZXJ0aWVz
Tm9FeGNsdXNpb25zKToKKyAgICAgICAgKiBidWlsdGlucy9Qcm9taXNlT3BlcmF0aW9ucy5qczoK
KyAgICAgICAgKGdsb2JhbFByaXZhdGUubmV3SGFuZGxlZFJlamVjdGVkUHJvbWlzZSk6CisgICAg
ICAgICogYnVpbHRpbnMvUmVnRXhwUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0
ZS5oYXNPYnNlcnZhYmxlU2lkZUVmZmVjdHNGb3JSZWdFeHBNYXRjaCk6CisgICAgICAgIChnbG9i
YWxQcml2YXRlLmhhc09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclJlZ0V4cFNwbGl0KToKKyAgICAg
ICAgKiBidWlsdGlucy9TdHJpbmdQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRl
Lmhhc09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclN0cmluZ1JlcGxhY2UpOgorICAgICAgICAoZ2xv
YmFsUHJpdmF0ZS5nZXREZWZhdWx0Q29sbGF0b3IpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5j
cHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRh
Tm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpvcGVyYXRvcj09IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25NZXRhZGF0YU5vZGU6OmR1bXAgY29uc3QpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAg
ICAgICAgKEpTQzo6cGFyc2UpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJFcnJvci5oOgorICAg
ICAgICAoSlNDOjpQYXJzZXJFcnJvcjo6dHlwZSBjb25zdCk6CisgICAgICAgICogcGFyc2VyL1Bh
cnNlclRva2Vucy5oOgorICAgICAgICAoSlNDOjpKU1RleHRQb3NpdGlvbjo6b3BlcmF0b3I9PSBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTVGV4dFBvc2l0aW9uOjpvcGVyYXRvciE9IGNvbnN0KToK
KyAgICAgICAgKiBwYXJzZXIvU291cmNlQ29kZS5oOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2Rl
OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZTo6b3BlcmF0b3Ih
PSBjb25zdCk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGU6OnN1YkV4cHJlc3Npb24gY29uc3Qp
OgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlOjpzdWJFeHByZXNzaW9uKTogRGVsZXRlZC4KKwog
MjAxOC0wNi0yNyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgc29tZSBtb3JlIHJlZ2lzdGVyIHN0YXRlIGluZm9ybWF0aW9uIHdoZW4gd2UgY3Jhc2ggaW4g
cmVwYXRjaFB1dEJ5SWQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3lu
Y0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5qcwkocmV2
aXNpb24gMjMzMzE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnJv
bVN5bmNJdGVyYXRvclByb3RvdHlwZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMTUxLDYgKzE1MSw4
IEBAIGZ1bmN0aW9uIHRocm93KGV4Y2VwdGlvbikKIEBnbG9iYWxQcml2YXRlCiBmdW5jdGlvbiBj
cmVhdGVBc3luY0Zyb21TeW5jSXRlcmF0b3Ioc3luY0l0ZXJhdG9yLCBuZXh0TWV0aG9kKQogewor
ICAgICJ1c2Ugc3RyaWN0IjsKKwogICAgIGlmICghQGlzT2JqZWN0KHN5bmNJdGVyYXRvcikpCiAg
ICAgICAgIEB0aHJvd1R5cGVFcnJvcignT25seSBvYmplY3RzIGNhbiBiZSB3cmFwcGVkIGJ5IGFz
eW5jLWZyb20tc3luYyB3cmFwcGVyJyk7CiAKQEAgLTE2MSw2ICsxNjMsOCBAQCBmdW5jdGlvbiBj
cmVhdGVBc3luY0Zyb21TeW5jSXRlcmF0b3Ioc3luCiBAY29uc3RydWN0b3IKIGZ1bmN0aW9uIEFz
eW5jRnJvbVN5bmNJdGVyYXRvckNvbnN0cnVjdG9yKHN5bmNJdGVyYXRvciwgbmV4dE1ldGhvZCkK
IHsKKyAgICAidXNlIHN0cmljdCI7CisKICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUodGhpcywg
InN5bmNJdGVyYXRvciIsIHN5bmNJdGVyYXRvcik7CiAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRl
KHRoaXMsICJuZXh0TWV0aG9kIiwgbmV4dE1ldGhvZCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAkocmV2
aXNpb24gMjMzMzE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDQwICs4NSwxNzUgQEAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aQogCiBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBDb25zdHJ1Y3Rv
cktpbmQgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkp
CiB7CisgICAgLy8gU29tZW9uZSBzaG91bGQgZ2V0IG1hZCBhdCBtZSBmb3Igd3JpdGluZyB0aGlz
IGNvZGUuIEJ1dCwgaXQgcHJldmVudHMgdXMgZnJvbSByZWN1cnNpbmcgaW50bworICAgIC8vIHRo
ZSBwYXJzZXIsIGFuZCBoZW5jZSwgZnJvbSB0aHJvd2luZyBPT00vc3RhY2sgb3ZlcmZsb3cgd2hl
biBwYXJzaW5nIGEgYnVpbHRpbi4KKyAgICBTdHJpbmdWaWV3IHZpZXcgPSBzb3VyY2Uudmlldygp
OworICAgIFJFTEVBU0VfQVNTRVJUKCF2aWV3LmlzTnVsbCgpKTsKKyAgICBSRUxFQVNFX0FTU0VS
VCh2aWV3LmlzOEJpdCgpKTsKKyAgICBhdXRvKiBjaGFyYWN0ZXJzID0gdmlldy5jaGFyYWN0ZXJz
OCgpOworICAgIFJFTEVBU0VfQVNTRVJUKHZpZXcubGVuZ3RoKCkgPj0gMTQpOyAvLyBzdHJsZW4o
IihmdW5jdGlvbigpe30pIikgPT0gMTQKKyAgICBSRUxFQVNFX0FTU0VSVChjaGFyYWN0ZXJzWzBd
ID09ICAnKCcpOworICAgIFJFTEVBU0VfQVNTRVJUKGNoYXJhY3RlcnNbMV0gPT0gICdmJyk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoY2hhcmFjdGVyc1syXSA9PSAgJ3UnKTsKKyAgICBSRUxFQVNFX0FT
U0VSVChjaGFyYWN0ZXJzWzNdID09ICAnbicpOworICAgIFJFTEVBU0VfQVNTRVJUKGNoYXJhY3Rl
cnNbNF0gPT0gICdjJyk7CisgICAgUkVMRUFTRV9BU1NFUlQoY2hhcmFjdGVyc1s1XSA9PSAgJ3Qn
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChjaGFyYWN0ZXJzWzZdID09ICAnaScpOworICAgIFJFTEVB
U0VfQVNTRVJUKGNoYXJhY3RlcnNbN10gPT0gICdvJyk7CisgICAgUkVMRUFTRV9BU1NFUlQoY2hh
cmFjdGVyc1s4XSA9PSAgJ24nKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjaGFyYWN0ZXJzWzldID09
ICAnICcpOworICAgIFJFTEVBU0VfQVNTRVJUKGNoYXJhY3RlcnNbMTBdID09ICcoJyk7CisKKyAg
ICBKU1Rva2VuTG9jYXRpb24gc3RhcnQ7CisgICAgc3RhcnQubGluZSA9IC0xOworICAgIHN0YXJ0
LmxpbmVTdGFydE9mZnNldCA9IC0xOworICAgIHN0YXJ0LnN0YXJ0T2Zmc2V0ID0gMTA7CisgICAg
c3RhcnQuZW5kT2Zmc2V0ID0gLTE7CisKKyAgICBKU1Rva2VuTG9jYXRpb24gZW5kOworICAgIGVu
ZC5saW5lID0gMTsKKyAgICBlbmQubGluZVN0YXJ0T2Zmc2V0ID0gMDsKKyAgICBlbmQuc3RhcnRP
ZmZzZXQgPSAxOworICAgIGVuZC5lbmRPZmZzZXQgPSAtMTsKKworICAgIHVuc2lnbmVkIHN0YXJ0
Q29sdW1uID0gMTA7IC8vIHN0cmxlbigiZnVuY3Rpb24gKCIpID09IDEwCisgICAgaW50IGZ1bmN0
aW9uS2V5d29yZFN0YXJ0ID0gMTsgLy8gKGYKKyAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQgPSAx
MDsKKyAgICBpbnQgcGFyYW1ldGVyc1N0YXJ0ID0gMTA7CisgICAgYm9vbCBpc0luU3RyaWN0Q29u
dGV4dCA9IGZhbHNlOworICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBm
YWxzZTsKKworICAgIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50OworICAgIHsKKyAgICAgICAgdW5z
aWduZWQgaSA9IDExOworICAgICAgICB1bnNpZ25lZCBjb21tYXMgPSAwOworICAgICAgICBib29s
IHNhd09uZVBhcmFtID0gZmFsc2U7CisgICAgICAgIGJvb2wgaGFzUmVzdFBhcmFtID0gZmFsc2U7
CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBBU1NFUlQoaSA8IHZpZXcubGVu
Z3RoKCkpOworICAgICAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0gPT0gJyknKQorICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBpZiAoY2hhcmFjdGVyc1tpXSA9PSAnLCcpCisg
ICAgICAgICAgICAgICAgKytjb21tYXM7CisgICAgICAgICAgICBlbHNlIGlmICghTGV4ZXI8TENo
YXI+Ojppc1doaXRlU3BhY2UoY2hhcmFjdGVyc1tpXSkpCisgICAgICAgICAgICAgICAgc2F3T25l
UGFyYW0gPSB0cnVlOworCisgICAgICAgICAgICBpZiAoaSArIDIgPCB2aWV3Lmxlbmd0aCgpICYm
IGNoYXJhY3RlcnNbaV0gPT0gJy4nICYmIGNoYXJhY3RlcnNbaSArIDFdID09ICcuJyAmJiBjaGFy
YWN0ZXJzW2kgKyAyXSA9PSAnLicpCisgICAgICAgICAgICAgICAgaGFzUmVzdFBhcmFtID0gdHJ1
ZTsKKworICAgICAgICAgICAgKytpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbW1hcykK
KyAgICAgICAgICAgIHBhcmFtZXRlckNvdW50ID0gY29tbWFzICsgMTsKKyAgICAgICAgZWxzZSBp
ZiAoc2F3T25lUGFyYW0pCisgICAgICAgICAgICBwYXJhbWV0ZXJDb3VudCA9IDE7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHBhcmFtZXRlckNvdW50ID0gMDsKKworICAgICAgICBpZiAoaGFz
UmVzdFBhcmFtKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwYXJhbWV0ZXJDb3VudCk7
CisgICAgICAgICAgICAtLXBhcmFtZXRlckNvdW50OworICAgICAgICB9CisgICAgfQorCisgICAg
dW5zaWduZWQgbGluZUNvdW50ID0gMDsKKyAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSAwOworICAg
IHVuc2lnbmVkIG9mZnNldE9mTGFzdE5ld2xpbmUgPSAwOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB2aWV3Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0g
PT0gJ1xuJykgeworICAgICAgICAgICAgKytsaW5lQ291bnQ7CisgICAgICAgICAgICBlbmRDb2x1
bW4gPSAwOworICAgICAgICAgICAgb2Zmc2V0T2ZMYXN0TmV3bGluZSA9IGk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgKytlbmRDb2x1bW47CisKKyAgICAgICAgaWYgKCFpc0luU3RyaWN0
Q29udGV4dCAmJiAoY2hhcmFjdGVyc1tpXSA9PSAnIicgfHwgY2hhcmFjdGVyc1tpXSA9PSAnXCcn
KSkgeworICAgICAgICAgICAgaWYgKGkgKyAxICsgc3RybGVuKCJ1c2Ugc3RyaWN0IikgPD0gdmll
dy5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGlmICghbWVtY21wKGNoYXJhY3RlcnMgKyBp
ICsgMSwgInVzZSBzdHJpY3QiLCBzdHJsZW4oInVzZSBzdHJpY3QiKSkpCisgICAgICAgICAgICAg
ICAgICAgIGlzSW5TdHJpY3RDb250ZXh0ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIGludCBjbG9zZUJyYWNlT2Zmc2V0RnJvbUVuZCA9IDE7CisgICAgd2hp
bGUgKHRydWUpIHsKKyAgICAgICAgaWYgKGNoYXJhY3RlcnNbdmlldy5sZW5ndGgoKSAtIGNsb3Nl
QnJhY2VPZmZzZXRGcm9tRW5kXSA9PSAnfScpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
KytjbG9zZUJyYWNlT2Zmc2V0RnJvbUVuZDsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBwb3NpdGlv
bkJlZm9yZUxhc3ROZXdsaW5lTGluZVN0YXJ0T2Zmc2V0ID0gMDsgLy8gVGhpcyBpcyB0aGUgc2Vj
b25kIHRvIGxhc3QgbmV3bGluZSArIDEuCisgICAgZm9yIChpbnQgaSA9IG9mZnNldE9mTGFzdE5l
d2xpbmUgLSAxOyB0cnVlOyApIHsKKyAgICAgICAgaWYgKGkgPCAwKQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldID09ICdcbicpIHsKKyAgICAgICAgICAgIHBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmVMaW5lU3RhcnRPZmZzZXQgPSBpICsgMTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIC0taTsKKyAgICB9CisKICAgICBKU1RleHRQ
b3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOwotICAgIFBhcnNlckVycm9yIGVycm9y
OworICAgIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUubGluZSA9IGxpbmVDb3VudDsKKyAgICBw
b3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lLm9mZnNldCA9IG9mZnNldE9mTGFzdE5ld2xpbmU7Cisg
ICAgcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZS5saW5lU3RhcnRPZmZzZXQgPSBwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lTGluZVN0YXJ0T2Zmc2V0OworCisgICAgU291cmNlQ29kZSBuZXdTb3Vy
Y2UgPSBzb3VyY2Uuc3ViRXhwcmVzc2lvbigxMCwgdmlldy5sZW5ndGgoKSAtIGNsb3NlQnJhY2VP
ZmZzZXRGcm9tRW5kLCAwLCAxMCk7CiAgICAgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25z
dHJ1Y3RvciA9IGNvbnN0cnVjdG9yS2luZCAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7Ci0gICAg
SlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSA9IGlzQnVpbHRpbkRlZmF1bHRDbGFzc0Nv
bnN0cnVjdG9yID8gSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiA6IEpTUGFyc2VyQnVp
bHRpbk1vZGU6OkJ1aWx0aW47CiAgICAgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCA9IGlzQnVp
bHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID8gVW5saW5rZWROb3JtYWxGdW5jdGlvbiA6IFVu
bGlua2VkQnVpbHRpbkZ1bmN0aW9uOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9ncmFtTm9kZT4g
cHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigKLSAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50
aWZpZXIoKSwgYnVpbHRpbk1vZGUsCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3Ry
aWN0LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3Jh
bU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwKLSAgICAgICAgJnBvc2l0aW9u
QmVmb3JlTGFzdE5ld2xpbmUsIGNvbnN0cnVjdG9yS2luZCk7Ci0KLSAgICBpZiAoIXByb2dyYW0p
IHsKLSAgICAgICAgZGF0YUxvZygiRmF0YWwgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW4gZnVuY3Rp
b24gJyIsIG5hbWUuc3RyaW5nKCksICInOiAiLCBlcnJvci5tZXNzYWdlKCkpOwotICAgICAgICBD
UkFTSCgpOworCisgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUgbWV0YWRhdGEoCisgICAgICAgIHN0
YXJ0LCBlbmQsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBm
dW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LAorICAgICAgICBpc0luU3RyaWN0Q29u
dGV4dCwgY29uc3RydWN0b3JLaW5kLCBjb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0b3JLaW5k
OjpFeHRlbmRzID8gU3VwZXJCaW5kaW5nOjpOZWVkZWQgOiBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwKKyAgICAgICAgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rp
b25Nb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisKKyAgICBtZXRhZGF0YS5m
aW5pc2hQYXJzaW5nKG5ld1NvdXJjZSwgSWRlbnRpZmllcigpLCBGdW5jdGlvbk1vZGU6OkZ1bmN0
aW9uRXhwcmVzc2lvbik7CisgICAgbWV0YWRhdGEub3ZlcnJpZGVOYW1lKG5hbWUpOworICAgIG1l
dGFkYXRhLnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOworCisgICAg
aWYgKCFBU1NFUlRfRElTQUJMRUQgfHwgT3B0aW9uczo6dmFsaWRhdGVCeXRlY29kZSgpKSB7Cisg
ICAgICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmVGcm9tUGFyc2Vy
OworICAgICAgICBQYXJzZXJFcnJvciBlcnJvcjsKKyAgICAgICAgSlNQYXJzZXJCdWlsdGluTW9k
ZSBidWlsdGluTW9kZSA9IGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID8gSlNQYXJz
ZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiA6IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW47
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFBy
b2dyYW1Ob2RlPigKKyAgICAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0
aW5Nb2RlLAorICAgICAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIEpTUGFy
c2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3Vw
ZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yLAorICAgICAgICAgICAgJnBvc2l0aW9uQmVmb3Jl
TGFzdE5ld2xpbmVGcm9tUGFyc2VyLCBjb25zdHJ1Y3RvcktpbmQpOworCisgICAgICAgIGlmIChw
cm9ncmFtKSB7CisgICAgICAgICAgICBTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gcHJv
Z3JhbS0+c2luZ2xlU3RhdGVtZW50KCk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChleHBy
U3RhdGVtZW50KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQtPmlz
RXhwclN0YXRlbWVudCgpKTsKKyAgICAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBmdW5jRXhwciA9
IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oZXhwclN0YXRlbWVudCktPmV4cHIoKTsK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHByKTsKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGZ1bmNFeHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKKyAgICAgICAgICAgIEZ1bmN0
aW9uTWV0YWRhdGFOb2RlKiBtZXRhZGF0YUZyb21QYXJzZXIgPSBzdGF0aWNfY2FzdDxGdW5jRXhw
ck5vZGUqPihmdW5jRXhwciktPm1ldGFkYXRhKCk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VCghcHJvZ3JhbS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIG1ldGFkYXRhRnJvbVBhcnNlci0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZUZyb21QYXJzZXIpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobWV0YWRh
dGFGcm9tUGFyc2VyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1ldGFkYXRhRnJvbVBh
cnNlci0+aWRlbnQoKS5pc051bGwoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFRo
aXMgZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1dCBzdHJpbmcgdGhhdCB3b3VsZCByZXN1bHQgaW4g
YSBzaW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9uIGV4cHJlc3Npb24uCisgICAgICAgICAgICBtZXRh
ZGF0YUZyb21QYXJzZXItPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmVG
cm9tUGFyc2VyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1ldGFkYXRhRnJvbVBhcnNl
cik7CisgICAgICAgICAgICBtZXRhZGF0YUZyb21QYXJzZXItPm92ZXJyaWRlTmFtZShuYW1lKTsK
KyAgICAgICAgICAgIG1ldGFkYXRhRnJvbVBhcnNlci0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25C
ZWZvcmVMYXN0TmV3bGluZUZyb21QYXJzZXIpOworCisgICAgICAgICAgICBpZiAobWV0YWRhdGEg
IT0gKm1ldGFkYXRhRnJvbVBhcnNlciB8fCBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lRnJvbVBh
cnNlciAhPSBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKSB7CisgICAgICAgICAgICAgICAgV1RG
TG9nQWx3YXlzKCJNZXRhZGF0YSBvZiBwYXJzZXIgYW5kIGhhbmQgcm9sbGVkIHBhcnNlciBkb24n
dCBtYXRjaFxuIik7CisgICAgICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVycm9yLmlzVmFsaWQo
KSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChlcnJvci50eXBlKCkgPT0gUGFyc2VyRXJy
b3I6OlN0YWNrT3ZlcmZsb3cpOworICAgICAgICB9CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9k
ZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVudCgpOwotICAgIFJFTEVB
U0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1l
bnQtPmlzRXhwclN0YXRlbWVudCgpKTsKLSAgICBFeHByZXNzaW9uTm9kZSogZnVuY0V4cHIgPSBz
dGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KGV4cHJTdGF0ZW1lbnQpLT5leHByKCk7Ci0g
ICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHIpOwotICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHBy
LT5pc0Z1bmNFeHByTm9kZSgpKTsKLSAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbWV0YWRhdGEg
PSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihmdW5jRXhwciktPm1ldGFkYXRhKCk7Ci0gICAg
UkVMRUFTRV9BU1NFUlQoIXByb2dyYW0tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOwotICAgIAot
ICAgIG1ldGFkYXRhLT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsK
LSAgICBSRUxFQVNFX0FTU0VSVChtZXRhZGF0YSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobWV0YWRh
dGEtPmlkZW50KCkuaXNOdWxsKCkpOwotICAgIAotICAgIC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1l
cyBhbiBpbnB1dCBzdHJpbmcgdGhhdCB3b3VsZCByZXN1bHQgaW4gYSBzaW5nbGUgYW5vbnltb3Vz
IGZ1bmN0aW9uIGV4cHJlc3Npb24uCi0gICAgbWV0YWRhdGEtPnNldEVuZFBvc2l0aW9uKHBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwotICAgIFJFTEVBU0VfQVNTRVJUKG1ldGFkYXRhKTsKLSAg
ICBtZXRhZGF0YS0+b3ZlcnJpZGVOYW1lKG5hbWUpOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQg
ZHVtbXlURFpWYXJpYWJsZXM7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0
aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBz
b3VyY2UsIG1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1v
ZGU6OkNsYXNzaWMsIGR1bW15VERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUs
IGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgJm1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5
LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIGR1bW15VERaVmFyaWFibGVzLCBEZXJpdmVk
Q29udGV4dFR5cGU6Ok5vbmUsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKICAg
ICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxlOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvR2xvYmFsT3BlcmF0aW9ucy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT3BlcmF0aW9ucy5qcwkocmV2aXNpb24gMjMz
MzE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dsb2JhbE9wZXJhdGlvbnMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTYyLDEyICs2MiwxNSBAQCBmdW5jdGlvbiBpc0RpY3Rpb25h
cnkob2JqZWN0KQogQG92ZXJyaWRkZW5OYW1lPSJnZXQgW1N5bWJvbC5zcGVjaWVzXSIKIGZ1bmN0
aW9uIHNwZWNpZXNHZXR0ZXIoKQogeworICAgICJ1c2Ugc3RyaWN0IjsKICAgICByZXR1cm4gdGhp
czsKIH0KIAogQGdsb2JhbFByaXZhdGUKIGZ1bmN0aW9uIHNwZWNpZXNDb25zdHJ1Y3RvcihvYmos
IGRlZmF1bHRDb25zdHJ1Y3RvcikKIHsKKyAgICAidXNlIHN0cmljdCI7CisKICAgICB2YXIgY29u
c3RydWN0b3IgPSBvYmouY29uc3RydWN0b3I7CiAgICAgaWYgKGNvbnN0cnVjdG9yID09PSBAdW5k
ZWZpbmVkKQogICAgICAgICByZXR1cm4gZGVmYXVsdENvbnN0cnVjdG9yOwpAQCAtODQsNiArODcs
OCBAQCBmdW5jdGlvbiBzcGVjaWVzQ29uc3RydWN0b3Iob2JqLCBkZWZhdWx0CiBAZ2xvYmFsUHJp
dmF0ZQogZnVuY3Rpb24gY29weURhdGFQcm9wZXJ0aWVzKHRhcmdldCwgc291cmNlLCBleGNsdWRl
ZFNldCkKIHsKKyAgICAidXNlIHN0cmljdCI7CisKICAgICBpZiAoIUBpc09iamVjdCh0YXJnZXQp
KQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoInRhcmdldCBuZWVkcyB0byBiZSBhbiBvYmplY3Qi
KTsKIApAQCAtMTA5LDYgKzExNCw4IEBAIGZ1bmN0aW9uIGNvcHlEYXRhUHJvcGVydGllcyh0YXJn
ZXQsIHNvdXIKIEBnbG9iYWxQcml2YXRlCiBmdW5jdGlvbiBjb3B5RGF0YVByb3BlcnRpZXNOb0V4
Y2x1c2lvbnModGFyZ2V0LCBzb3VyY2UpCiB7CisgICAgInVzZSBzdHJpY3QiOworCiAgICAgaWYg
KCFAaXNPYmplY3QodGFyZ2V0KSkKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJ0YXJnZXQgbmVl
ZHMgdG8gYmUgYW4gb2JqZWN0Iik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9Qcm9taXNlT3BlcmF0aW9ucy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvUHJvbWlzZU9wZXJhdGlvbnMuanMJKHJldmlzaW9uIDIzMzMxNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlT3BlcmF0aW9ucy5qcwkod29y
a2luZyBjb3B5KQpAQCAtODcsNiArODcsNyBAQCBmdW5jdGlvbiBuZXdQcm9taXNlQ2FwYWJpbGl0
eShjb25zdHJ1Y3RvCiBAZ2xvYmFsUHJpdmF0ZQogZnVuY3Rpb24gbmV3SGFuZGxlZFJlamVjdGVk
UHJvbWlzZShlcnJvcikKIHsKKyAgICAidXNlIHN0cmljdCI7CiAgICAgbGV0IHByb21pc2UgPSBA
UHJvbWlzZS5AcmVqZWN0KGVycm9yKTsKICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUocHJvbWlz
ZSwgInByb21pc2VJc0hhbmRsZWQiLCB0cnVlKTsKICAgICByZXR1cm4gcHJvbWlzZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWdFeHBQcm90b3R5cGUuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1JlZ0V4cFByb3RvdHlwZS5q
cwkocmV2aXNpb24gMjMzMzE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Jl
Z0V4cFByb3RvdHlwZS5qcwkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsMTAgQEAgZnVuY3Rp
b24gcmVnRXhwRXhlYyhyZWdleHAsIHN0cikKIH0KIAogQGdsb2JhbFByaXZhdGUKLWZ1bmN0aW9u
IGhhc09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclJlZ0V4cE1hdGNoKHJlZ2V4cCkgeworZnVuY3Rp
b24gaGFzT2JzZXJ2YWJsZVNpZGVFZmZlY3RzRm9yUmVnRXhwTWF0Y2gocmVnZXhwKQoreworICAg
ICJ1c2Ugc3RyaWN0IjsKKwogICAgIC8vIFRoaXMgaXMgYWNjZXNzZWQgYnkgdGhlIFJlZ0V4cEV4
ZWMgaW50ZXJuYWwgZnVuY3Rpb24uCiAgICAgbGV0IHJlZ2V4cEV4ZWMgPSBAdHJ5R2V0QnlJZChy
ZWdleHAsICJleGVjIik7CiAgICAgaWYgKHJlZ2V4cEV4ZWMgIT09IEByZWdFeHBCdWlsdGluRXhl
YykKQEAgLTM1MSw3ICszNTQsMTAgQEAgZnVuY3Rpb24gc2VhcmNoKHN0ckFyZykKIH0KIAogQGds
b2JhbFByaXZhdGUKLWZ1bmN0aW9uIGhhc09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclJlZ0V4cFNw
bGl0KHJlZ2V4cCkgeworZnVuY3Rpb24gaGFzT2JzZXJ2YWJsZVNpZGVFZmZlY3RzRm9yUmVnRXhw
U3BsaXQocmVnZXhwKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKwogICAgIC8vIFRoaXMgaXMgYWNj
ZXNzZWQgYnkgdGhlIFJlZ0V4cEV4ZWMgaW50ZXJuYWwgZnVuY3Rpb24uCiAgICAgbGV0IHJlZ2V4
cEV4ZWMgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJleGVjIik7CiAgICAgaWYgKHJlZ2V4cEV4ZWMg
IT09IEByZWdFeHBCdWlsdGluRXhlYykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9TdHJpbmdQcm90b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5qcwkocmV2aXNpb24gMjMzMzE2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5qcwkod29ya2luZyBj
b3B5KQpAQCAtMTkxLDcgKzE5MSwxMCBAQCBmdW5jdGlvbiBwYWRFbmQobWF4TGVuZ3RoLyosIGZp
bGxTdHJpbmcqCiB9CiAKIEBnbG9iYWxQcml2YXRlCi1mdW5jdGlvbiBoYXNPYnNlcnZhYmxlU2lk
ZUVmZmVjdHNGb3JTdHJpbmdSZXBsYWNlKHJlZ2V4cCwgcmVwbGFjZXIpIHsKK2Z1bmN0aW9uIGhh
c09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclN0cmluZ1JlcGxhY2UocmVnZXhwLCByZXBsYWNlcikK
K3sKKyAgICAidXNlIHN0cmljdCI7CisKICAgICBpZiAocmVwbGFjZXIgIT09IEByZWdFeHBQcm90
b3R5cGVTeW1ib2xSZXBsYWNlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKQEAgLTIzNSw2
ICsyMzgsOCBAQCBmdW5jdGlvbiByZXBsYWNlKHNlYXJjaCwgcmVwbGFjZSkKIEBnbG9iYWxQcml2
YXRlCiBmdW5jdGlvbiBnZXREZWZhdWx0Q29sbGF0b3IoKQogeworICAgICJ1c2Ugc3RyaWN0IjsK
KwogICAgIHJldHVybiBAZ2V0RGVmYXVsdENvbGxhdG9yLmNvbGxhdG9yIHx8IChAZ2V0RGVmYXVs
dENvbGxhdG9yLmNvbGxhdG9yID0gbmV3IEBDb2xsYXRvcigpKTsKIH0KICAgICAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCShyZXZpc2lvbiAyMzMzMTYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjE0LDYgKzIxNCwyOSBAQCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5v
CiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihj
b25zdHJ1Y3RvcktpbmQpKTsKIH0KIAorRnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0
YWRhdGFOb2RlKAorICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgCisg
ICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1
bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgCisgICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBp
bnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmlj
dENvbnRleHQsIAorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmlu
ZGluZyBzdXBlckJpbmRpbmcsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1v
ZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICAgICAgOiBO
b2RlKGVuZExvY2F0aW9uKQorICAgICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4pCisg
ICAgICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQorICAgICAgICAsIG1fZnVuY3Rpb25LZXl3
b3JkU3RhcnQoZnVuY3Rpb25LZXl3b3JkU3RhcnQpCisgICAgICAgICwgbV9mdW5jdGlvbk5hbWVT
dGFydChmdW5jdGlvbk5hbWVTdGFydCkKKyAgICAgICAgLCBtX3BhcmFtZXRlcnNTdGFydChwYXJh
bWV0ZXJzU3RhcnQpCisgICAgICAgICwgbV9zdGFydFN0YXJ0T2Zmc2V0KHN0YXJ0TG9jYXRpb24u
c3RhcnRPZmZzZXQpCisgICAgICAgICwgbV9wYXJhbWV0ZXJDb3VudChwYXJhbWV0ZXJDb3VudCkK
KyAgICAgICAgLCBtX3BhcnNlTW9kZShtb2RlKQorICAgICAgICAsIG1faXNJblN0cmljdENvbnRl
eHQoaXNJblN0cmljdENvbnRleHQpCisgICAgICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCisgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCisgICAgICAgICwgbV9pc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikK
K3sKKyAgICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1
cGVyQmluZGluZykpOworICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7Cit9CisKIHZvaWQgRnVuY3Rpb25NZXRhZGF0
YU5vZGU6OmZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkKIHsKICAgICBtX3NvdXJj
ZSA9IHNvdXJjZTsKQEAgLTIyNyw2ICsyNTAsNTUgQEAgdm9pZCBGdW5jdGlvbk1ldGFkYXRhTm9k
ZTo6c2V0RW5kUG9zaXRpbwogICAgIG1fZW5kQ29sdW1uID0gcG9zaXRpb24ub2Zmc2V0IC0gcG9z
aXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogfQogCitib29sIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpv
cGVyYXRvcj09KGNvbnN0IEZ1bmN0aW9uTWV0YWRhdGFOb2RlJiBvdGhlcikgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9pZGVudCA9PSBvdGhlci5tX2lkZW50CisgICAgICAgICYmIG1fZWNtYU5hbWUg
PT0gb3RoZXIubV9lY21hTmFtZQorICAgICAgICAmJiBtX2luZmVycmVkTmFtZSA9PSBvdGhlci5t
X2luZmVycmVkTmFtZQorICAgICAgICAmJiBtX2Z1bmN0aW9uTW9kZT09IG90aGVyLm1fZnVuY3Rp
b25Nb2RlCisgICAgICAgICYmIG1fc3RhcnRDb2x1bW49PSBvdGhlci5tX3N0YXJ0Q29sdW1uCisg
ICAgICAgICYmIG1fZW5kQ29sdW1uPT0gb3RoZXIubV9lbmRDb2x1bW4KKyAgICAgICAgJiYgbV9m
dW5jdGlvbktleXdvcmRTdGFydD09IG90aGVyLm1fZnVuY3Rpb25LZXl3b3JkU3RhcnQKKyAgICAg
ICAgJiYgbV9mdW5jdGlvbk5hbWVTdGFydD09IG90aGVyLm1fZnVuY3Rpb25OYW1lU3RhcnQKKyAg
ICAgICAgJiYgbV9wYXJhbWV0ZXJzU3RhcnQ9PSBvdGhlci5tX3BhcmFtZXRlcnNTdGFydAorICAg
ICAgICAmJiBtX3NvdXJjZT09IG90aGVyLm1fc291cmNlCisgICAgICAgICYmIG1fY2xhc3NTb3Vy
Y2U9PSBvdGhlci5tX2NsYXNzU291cmNlCisgICAgICAgICYmIG1fc3RhcnRTdGFydE9mZnNldD09
IG90aGVyLm1fc3RhcnRTdGFydE9mZnNldAorICAgICAgICAmJiBtX3BhcmFtZXRlckNvdW50PT0g
b3RoZXIubV9wYXJhbWV0ZXJDb3VudAorICAgICAgICAmJiBtX2xhc3RMaW5lPT0gb3RoZXIubV9s
YXN0TGluZQorICAgICAgICAmJiBtX3BhcnNlTW9kZT09IG90aGVyLm1fcGFyc2VNb2RlCisgICAg
ICAgICYmIG1faXNJblN0cmljdENvbnRleHQgPT0gb3RoZXIubV9pc0luU3RyaWN0Q29udGV4dCAK
KyAgICAgICAgJiYgbV9zdXBlckJpbmRpbmcgPT0gb3RoZXIubV9zdXBlckJpbmRpbmcgCisgICAg
ICAgICYmIG1fY29uc3RydWN0b3JLaW5kID09IG90aGVyLm1fY29uc3RydWN0b3JLaW5kIAorICAg
ICAgICAmJiBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID09IG90aGVyLm1faXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24KKyAgICAgICAgJiYgbV9wb3NpdGlvbiA9PSBvdGhlci5t
X3Bvc2l0aW9uOworfQorCit2b2lkIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpkdW1wKFByaW50U3Ry
ZWFtJiBzdHJlYW0pIGNvbnN0Cit7CisgICAgc3RyZWFtLnByaW50bG4oIm1faWRlbnQgIiwgbV9p
ZGVudCk7CisgICAgc3RyZWFtLnByaW50bG4oIm1fZWNtYU5hbWUgIiwgbV9lY21hTmFtZSk7Cisg
ICAgc3RyZWFtLnByaW50bG4oIm1faW5mZXJyZWROYW1lICIsIG1faW5mZXJyZWROYW1lKTsKKyAg
ICBzdHJlYW0ucHJpbnRsbigibV9mdW5jdGlvbk1vZGUgIiwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KG1fZnVuY3Rpb25Nb2RlKSk7CisgICAgc3RyZWFtLnByaW50bG4oIm1fc3RhcnRDb2x1bW4gIiwg
bV9zdGFydENvbHVtbik7CisgICAgc3RyZWFtLnByaW50bG4oIm1fZW5kQ29sdW1uICIsIG1fZW5k
Q29sdW1uKTsKKyAgICBzdHJlYW0ucHJpbnRsbigibV9mdW5jdGlvbktleXdvcmRTdGFydCAiLCBt
X2Z1bmN0aW9uS2V5d29yZFN0YXJ0KTsKKyAgICBzdHJlYW0ucHJpbnRsbigibV9mdW5jdGlvbk5h
bWVTdGFydCAiLCBtX2Z1bmN0aW9uTmFtZVN0YXJ0KTsKKyAgICBzdHJlYW0ucHJpbnRsbigibV9w
YXJhbWV0ZXJzU3RhcnQgIiwgbV9wYXJhbWV0ZXJzU3RhcnQpOworICAgIHN0cmVhbS5wcmludGxu
KCJtX2NsYXNzU291cmNlLmlzTnVsbCgpICIsIG1fY2xhc3NTb3VyY2UuaXNOdWxsKCkpOworICAg
IHN0cmVhbS5wcmludGxuKCJtX3N0YXJ0U3RhcnRPZmZzZXQgIiwgbV9zdGFydFN0YXJ0T2Zmc2V0
KTsKKyAgICBzdHJlYW0ucHJpbnRsbigibV9wYXJhbWV0ZXJDb3VudCAiLCBtX3BhcmFtZXRlckNv
dW50KTsKKyAgICBzdHJlYW0ucHJpbnRsbigibV9sYXN0TGluZSAiLCBtX2xhc3RMaW5lKTsKKyAg
ICBzdHJlYW0ucHJpbnRsbigibV9wYXJzZU1vZGUgIiwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1f
cGFyc2VNb2RlKSk7CisgICAgc3RyZWFtLnByaW50bG4oIm1faXNJblN0cmljdENvbnRleHQgIiwg
bV9pc0luU3RyaWN0Q29udGV4dCk7CisgICAgc3RyZWFtLnByaW50bG4oIm1fc3VwZXJCaW5kaW5n
ICIsIG1fc3VwZXJCaW5kaW5nKTsKKyAgICBzdHJlYW0ucHJpbnRsbigibV9jb25zdHJ1Y3Rvcktp
bmQgIiwgbV9jb25zdHJ1Y3RvcktpbmQpOworICAgIHN0cmVhbS5wcmludGxuKCJtX2lzQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uICIsIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24p
OworICAgIHN0cmVhbS5wcmludGxuKCJwb3NpdGlvbigpLmxpbmUgIiwgcG9zaXRpb24oKS5saW5l
KTsKKyAgICBzdHJlYW0ucHJpbnRsbigicG9zaXRpb24oKS5vZmZzZXQgIiwgcG9zaXRpb24oKS5v
ZmZzZXQpOworICAgIHN0cmVhbS5wcmludGxuKCJwb3NpdGlvbigpLmxpbmVTdGFydE9mZnNldCAi
LCBwb3NpdGlvbigpLmxpbmVTdGFydE9mZnNldCk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBGdW5jdGlvbk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAogRnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4s
IFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyaWFibGVFbnZpcm9ubWVudCYgdmFyRW52aXJv
bm1lbnQsIEZ1bmN0aW9uU3RhY2smJiBmdW5jU3RhY2ssIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxl
eGljYWxWYXJpYWJsZXMsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYgc2xvcHB5TW9kZUhvaXN0
ZWRGdW5jdGlvbnMsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywgY29uc3QgU291cmNl
Q29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBJbm5lckFycm93RnVuY3Rp
b25Db2RlRmVhdHVyZXMgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29u
c3RhbnRzLCBSZWZQdHI8TW9kdWxlU2NvcGVEYXRhPiYmKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuaAkocmV2aXNpb24gMjMzMzE2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTg4LDYgKzE5ODgsMTQgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBw
YXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAogICAgICAgICAgICAgQ29u
c3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LAogICAg
ICAgICAgICAgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNz
aW9uKTsKKyAgICAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUoCisgICAgICAgICAgICBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgCisgICAg
ICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIAorICAgICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBp
bnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKKyAgICAgICAgICAg
IENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwK
KyAgICAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbik7CisKKyAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAKICAg
ICAgICAgdm9pZCBmaW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlm
aWVyJiwgRnVuY3Rpb25Nb2RlKTsKICAgICAgICAgCkBAIC0yMDI4LDcgKzIwMzYsMTMgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAgICAgICAgdW5zaWduZWQgbGFzdExpbmUoKSBjb25z
dCB7IHJldHVybiBtX2xhc3RMaW5lOyB9CiAKLSAgICBwcm90ZWN0ZWQ6CisgICAgICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBGdW5jdGlvbk1ldGFkYXRhTm9kZSYpIGNvbnN0OworICAgICAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgRnVuY3Rpb25NZXRhZGF0YU5vZGUmIG90aGVyKSBjb25zdAor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgICAg
IH0KKworICAgIHB1YmxpYzoKICAgICAgICAgSWRlbnRpZmllciBtX2lkZW50OwogICAgICAgICBJ
ZGVudGlmaWVyIG1fZWNtYU5hbWU7CiAgICAgICAgIElkZW50aWZpZXIgbV9pbmZlcnJlZE5hbWU7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgJKHJldmlzaW9uIDIzMzMx
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE5NjQsOCArMTk2NCwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFy
c2UoCiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAgICAg
KnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSgpOwogICAgICAgICBpZiAoYnVpbHRpbk1vZGUgPT0gSlNQYXJzZXJCdWlsdGluTW9kZTo6
QnVpbHRpbikgewotICAgICAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAgICAgICAgZGF0
YUxvZ0xuKCJFcnJvciBjb21waWxpbmcgYnVpbHRpbjogIiwgZXJyb3IubWVzc2FnZSgpKTsKKyAg
ICAgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGVycm9yLmlz
VmFsaWQoKSk7CisgICAgICAgICAgICAgICAgaWYgKGVycm9yLnR5cGUoKSAhPSBQYXJzZXJFcnJv
cjo6U3RhY2tPdmVyZmxvdykKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJVbmV4cGVj
dGVkIGVycm9yIGNvbXBpbGluZyBidWlsdGluOiAiLCBlcnJvci5tZXNzYWdlKCkpOworICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShkZWZhdWx0Q29uc3RydWN0b3JLaW5kID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgIkJ1
aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yIHNob3VsZCBhbHdheXMg
dXNlIGEgOC1iaXQgc3RyaW5nIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlckVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJFcnJvci5oCShyZXZpc2lvbiAyMzMzMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlckVycm9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDcgQEAg
cHVibGljOgogICAgIGNvbnN0IEpTVG9rZW4mIHRva2VuKCkgY29uc3QgeyByZXR1cm4gbV90b2tl
bjsgfQogICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2Fn
ZTsgfQogICAgIGludCBsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9saW5lOyB9CisgICAgRXJyb3JU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIEpTT2JqZWN0KiB0b0Vy
cm9yT2JqZWN0KAogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJUb2tlbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlclRva2Vucy5oCShyZXZpc2lvbiAyMzMzMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNiArMjAyLDE3
IEBAIHN0cnVjdCBKU1RleHRQb3NpdGlvbiB7CiAKICAgICBvcGVyYXRvciBpbnQoKSBjb25zdCB7
IHJldHVybiBvZmZzZXQ7IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBKU1RleHRQb3Np
dGlvbiYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbGluZSA9PSBvdGhlci5s
aW5lCisgICAgICAgICAgICAmJiBvZmZzZXQgPT0gb3RoZXIub2Zmc2V0CisgICAgICAgICAgICAm
JiBsaW5lU3RhcnRPZmZzZXQgPT0gb3RoZXIubGluZVN0YXJ0T2Zmc2V0OworICAgIH0KKyAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgSlNUZXh0UG9zaXRpb24mIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKwogICAgIGludCBsaW5l
OwogICAgIGludCBvZmZzZXQ7CiAgICAgaW50IGxpbmVTdGFydE9mZnNldDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCShyZXZpc2lvbiAyMzMzMTYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNzksNyArNzksMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgU291cmNlUHJv
dmlkZXIqIHByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gbV9wcm92aWRlci5nZXQoKTsgfQogCi0g
ICAgICAgIFNvdXJjZUNvZGUgc3ViRXhwcmVzc2lvbih1bnNpZ25lZCBvcGVuQnJhY2UsIHVuc2ln
bmVkIGNsb3NlQnJhY2UsIGludCBmaXJzdExpbmUsIGludCBzdGFydENvbHVtbik7CisgICAgICAg
IFNvdXJjZUNvZGUgc3ViRXhwcmVzc2lvbih1bnNpZ25lZCBvcGVuQnJhY2UsIHVuc2lnbmVkIGNs
b3NlQnJhY2UsIGludCBmaXJzdExpbmUsIGludCBzdGFydENvbHVtbikgY29uc3Q7CisKKyAgICAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNvdXJjZUNvZGUmIG90aGVyKSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gbV9maXJzdExpbmUgPT0gb3RoZXIubV9maXJzdExpbmUK
KyAgICAgICAgICAgICAgICAmJiBtX3N0YXJ0Q29sdW1uID09IG90aGVyLm1fc3RhcnRDb2x1bW4K
KyAgICAgICAgICAgICAgICAmJiBtX3Byb3ZpZGVyID09IG90aGVyLm1fcHJvdmlkZXIKKyAgICAg
ICAgICAgICAgICAmJiBtX3N0YXJ0T2Zmc2V0ID09IG90aGVyLm1fc3RhcnRPZmZzZXQKKyAgICAg
ICAgICAgICAgICAmJiBtX2VuZE9mZnNldCA9PSBvdGhlci5tX2VuZE9mZnNldDsKKyAgICAgICAg
fQorCisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTb3VyY2VDb2RlJiBvdGhlcikgY29u
c3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAg
ICAgICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBPcmRpbmFsTnVtYmVyIG1fZmlyc3RMaW5l
OwpAQCAtOTEsNyArMTA1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBTb3Vy
Y2VDb2RlKFN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc291cmNlLCBzb3VyY2VPcmlnaW4s
IHVybCwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlwZSksIHN0YXJ0UG9zaXRpb24ubV9saW5lLm9u
ZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSk7CiAgICAg
fQogICAgIAotICAgIGlubGluZSBTb3VyY2VDb2RlIFNvdXJjZUNvZGU6OnN1YkV4cHJlc3Npb24o
dW5zaWduZWQgb3BlbkJyYWNlLCB1bnNpZ25lZCBjbG9zZUJyYWNlLCBpbnQgZmlyc3RMaW5lLCBp
bnQgc3RhcnRDb2x1bW4pCisgICAgaW5saW5lIFNvdXJjZUNvZGUgU291cmNlQ29kZTo6c3ViRXhw
cmVzc2lvbih1bnNpZ25lZCBvcGVuQnJhY2UsIHVuc2lnbmVkIGNsb3NlQnJhY2UsIGludCBmaXJz
dExpbmUsIGludCBzdGFydENvbHVtbikgY29uc3QKICAgICB7CiAgICAgICAgIHN0YXJ0Q29sdW1u
ICs9IDE7IC8vIENvbnZlcnQgdG8gYmFzZSAxLgogICAgICAgICByZXR1cm4gU291cmNlQ29kZShS
ZWZQdHI8U291cmNlUHJvdmlkZXI+IHsgcHJvdmlkZXIoKSB9LCBvcGVuQnJhY2UsIGNsb3NlQnJh
Y2UgKyAxLCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1uKTsK
</data>
<flag name="review"
          id="361937"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
    <flag name="commit-queue"
          id="361945"
          type_id="3"
          status="-"
          setter="ews-watchlist"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343926</attachid>
            <date>2018-06-29 12:12:01 -0700</date>
            <delta_ts>2018-06-29 12:13:41 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>33226</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzMzNjUpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI1IEBACisyMDE4LTA2LTI5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFdlIHNob3VsZG4ndCByZWN1cnNlIGludG8gdGhlIHBhcnNlciB3aGVu
IGdhdGhlcmluZyBtZXRhZGF0YSBhYm91dCB2YXJpb3VzIGZ1bmN0aW9uIG9mZnNldHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDA3NAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzcxNjU4OTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBM
YW0uCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvdHJ5LWdldC1ieS1pZC1iYXNpYy5qczoK
KyAgICAgICAgKGNvbnN0LmJlbmNoLmYuY29uc3QuZm9vUGx1c0Jhci5jcmVhdGVCdWlsdGluKToK
KyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvdHJ5LWdldC1ieS1pZC1wb2x5bW9ycGhpYy5qczoK
KyAgICAgICAgKGZvb1BsdXNCYXIuY3JlYXRlQnVpbHRpbik6CisgICAgICAgICogc3RyZXNzL2Fy
cmF5LXB1c2gtd2l0aC1mb3JjZS1leGl0LmpzOgorICAgICAgICAqIHN0cmVzcy9kb250LWNyYXNo
LW9uLXN0YWNrLW92ZXJmbG93LXdoZW4tcGFyc2luZy1idWlsdGluLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGYpOgorICAgICAgICAqIHN0cmVzcy9kb250LWNyYXNoLW9uLXN0YWNrLW92ZXJmbG93LXdo
ZW4tcGFyc2luZy1kZWZhdWx0LWNvbnN0cnVjdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6
CisgICAgICAgIChwcm90b3R5cGUucnVuTmVhclN0YWNrTGltaXQpOgorICAgICAgICAqIHN0cmVz
cy9pcy1jb25zdHJ1Y3Rvci5qczoKKyAgICAgICAgKiBzdHJlc3MvdGFpbENhbGxGb3J3YXJkQXJn
dW1lbnRzLmpzOgorICAgICAgICAocHV0RnVuY1RvUHJpdmF0ZU5hbWUuY3JlYXRlQnVpbHRpbik6
CisKIDIwMTgtMDYtMjcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IERGRydzIGNvbXBpbGVSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKCkgYW5kIGNvbXBpbGVBbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZSgpIHNsb3cgcGF0aHMgc2hvdWxkIGFsc28gY2xlYXIgdW51c2Vk
IHByb3BlcnRpZXMuCkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy90cnktZ2V0LWJ5LWlk
LWJhc2ljLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3RyeS1nZXQt
YnktaWQtYmFzaWMuanMJKHJldmlzaW9uIDIzMzM1OSkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL3RyeS1nZXQtYnktaWQtYmFzaWMuanMJKHdvcmtpbmcgY29weSkKQEAgLTgsNyArOCw3IEBA
IGNvbnN0IGNoZWNrID0gKGdvdCwgZXhwZWN0KSA9PiB7IGlmIChnb3QKIAogY29uc3QgYmVuY2gg
PSBmID0+IHsKICAgICAvLyBSZS1jcmVhdGUgdGhlIGJ1aWx0aW4gZWFjaCB0aW1lLCBzbyBlYWNo
IGJlbmNobWFyayBnZXRzIGl0cyBvd24gdmFsdWUgcHJlZGljdGlvbi4KLSAgICBjb25zdCBmb29Q
bHVzQmFyID0gY3JlYXRlQnVpbHRpbihgKGZ1bmN0aW9uKG8pIHsgcmV0dXJuIEB0cnlHZXRCeUlk
KG8sICJmb28iKSArIEB0cnlHZXRCeUlkKG8sICJiYXIiKTsgfSlgKTsKKyAgICBjb25zdCBmb29Q
bHVzQmFyID0gY3JlYXRlQnVpbHRpbihgKGZ1bmN0aW9uIChvKSB7IHJldHVybiBAdHJ5R2V0QnlJ
ZChvLCAiZm9vIikgKyBAdHJ5R2V0QnlJZChvLCAiYmFyIik7IH0pYCk7CiAgICAgbm9JbmxpbmUo
Zm9vUGx1c0Jhcik7CiAgICAgZihmb29QbHVzQmFyKTsKIH0KSW5kZXg6IEpTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL3RyeS1nZXQtYnktaWQtcG9seW1vcnBoaWMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvdHJ5LWdldC1ieS1pZC1wb2x5bW9ycGhpYy5qcwkocmV2aXNp
b24gMjMzMzU5KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvdHJ5LWdldC1ieS1pZC1wb2x5
bW9ycGhpYy5qcwkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAgdmFyIGl0ID0gMWU1Owog
CiBjb25zdCBjaGVjayA9IChnb3QsIGV4cGVjdCkgPT4geyBpZiAoZ290ICE9IGV4cGVjdCkgdGhy
b3cgIkVycm9yOiBiYWQgcmVzdWx0IGdvdCAiICsgZ290ICsgIiBleHBlY3RlZCAiICsgZXhwZWN0
OyB9OwogCi1mb29QbHVzQmFyID0gY3JlYXRlQnVpbHRpbihgKGZ1bmN0aW9uKG8pIHsgcmV0dXJu
IEB0cnlHZXRCeUlkKG8sICJmb28iKSArIEB0cnlHZXRCeUlkKG8sICJiYXIiKTsgfSlgKTsKK2Zv
b1BsdXNCYXIgPSBjcmVhdGVCdWlsdGluKGAoZnVuY3Rpb24gKG8pIHsgcmV0dXJuIEB0cnlHZXRC
eUlkKG8sICJmb28iKSArIEB0cnlHZXRCeUlkKG8sICJiYXIiKTsgfSlgKTsKIG5vSW5saW5lKGZv
b1BsdXNCYXIpOwogCiBjb25zdCBiZW5jaCA9IGYgPT4geyBmKCk7IH0KSW5kZXg6IEpTVGVzdHMv
c3RyZXNzL2FycmF5LXB1c2gtd2l0aC1mb3JjZS1leGl0LmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVz
dHMvc3RyZXNzL2FycmF5LXB1c2gtd2l0aC1mb3JjZS1leGl0LmpzCShyZXZpc2lvbiAyMzMzNTkp
CisrKyBKU1Rlc3RzL3N0cmVzcy9hcnJheS1wdXNoLXdpdGgtZm9yY2UtZXhpdC5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIHZhciBjcmVhdGVCdWlsdGluID0gJHZtLmNyZWF0ZUJ1
aWx0aW47CiAKLXZhciB0YXJnZXQgPSBjcmVhdGVCdWlsdGluKGAoZnVuY3Rpb24oYXJyYXkpCit2
YXIgdGFyZ2V0ID0gY3JlYXRlQnVpbHRpbihgKGZ1bmN0aW9uIChhcnJheSkKIHsKICAgICBpZiAo
YXJyYXkpIHsKICAgICAgICAgQGlkV2l0aFByb2ZpbGUoYXJyYXksICJTcGVjT3RoZXIiKS5wdXNo
KDQyKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2RvbnQtY3Jhc2gtb24tc3RhY2stb3ZlcmZsb3ct
d2hlbi1wYXJzaW5nLWJ1aWx0aW4uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvZG9u
dC1jcmFzaC1vbi1zdGFjay1vdmVyZmxvdy13aGVuLXBhcnNpbmctYnVpbHRpbi5qcwkobm9uZXhp
c3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9kb250LWNyYXNoLW9uLXN0YWNrLW92ZXJmbG93LXdo
ZW4tcGFyc2luZy1idWlsdGluLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKy8v
QCBydW5EZWZhdWx0KCItLXNvZnRSZXNlcnZlZFpvbmVTaXplPTE2Mzg0IiwgIi0tcmVzZXJ2ZWRa
b25lU2l6ZT0wIiwgIi0tdXNlSklUPTAiLCAiLS12YWxpZGF0ZUJ5dGVjb2RlPTEiLCAiLS1tYXhQ
ZXJUaHJlYWRTdGFja1VzYWdlPTUwMDAwMCIpCisKK2Z1bmN0aW9uIGYoKSB7CisgICAgdHJ5IHsK
KyAgICAgICAgZigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIE1hcC5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKCcnLCB7fSk7CisgICAgICAgIH0gY2F0Y2gg
KGUpIHt9CisgICAgfQorfQorCitmKCkKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2RvbnQtY3Jhc2gt
b24tc3RhY2stb3ZlcmZsb3ctd2hlbi1wYXJzaW5nLWRlZmF1bHQtY29uc3RydWN0b3IuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvZG9udC1jcmFzaC1vbi1zdGFjay1vdmVyZmxvdy13
aGVuLXBhcnNpbmctZGVmYXVsdC1jb25zdHJ1Y3Rvci5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rl
c3RzL3N0cmVzcy9kb250LWNyYXNoLW9uLXN0YWNrLW92ZXJmbG93LXdoZW4tcGFyc2luZy1kZWZh
dWx0LWNvbnN0cnVjdG9yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKKy8vQCBy
dW5EZWZhdWx0KCItLXNvZnRSZXNlcnZlZFpvbmVTaXplPTE2Mzg0IiwgIi0tcmVzZXJ2ZWRab25l
U2l6ZT0wIiwgIi0tdXNlSklUPTAiLCAiLS12YWxpZGF0ZUJ5dGVjb2RlPTEiLCAiLS1tYXhQZXJU
aHJlYWRTdGFja1VzYWdlPTUwMDAwMCIpCisKK2Z1bmN0aW9uIHJ1bk5lYXJTdGFja0xpbWl0KGYp
IHsKKyAgICBmdW5jdGlvbiB0KCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJu
IHQoKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgbmV3IGNsYXNzIGV4dGVu
ZHMgKGNsYXNzIHt9KSB7fSgpOworICAgICAgICAgICAgcmV0dXJuIGYoKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gdCgpOworfQorZnVuY3Rpb24gZm9vKCkgeworICAgIG5ldyBjbGFz
cyBleHRlbmRzIChjbGFzcyB7fSkge30oKTsKK30KK3J1bk5lYXJTdGFja0xpbWl0KCgpID0+IHsg
cmV0dXJuIGZvbygpOyB9KTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2lzLWNvbnN0cnVjdG9yLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2lzLWNvbnN0cnVjdG9yLmpzCShyZXZpc2lv
biAyMzMzNTkpCisrKyBKU1Rlc3RzL3N0cmVzcy9pcy1jb25zdHJ1Y3Rvci5qcwkod29ya2luZyBj
b3B5KQpAQCAtNSw3ICs1LDcgQEAgZnVuY3Rpb24gYXNzZXJ0KHgpIHsKICAgICAgICAgdGhyb3cg
RXJyb3IoIkJhZCIpOwogfQogCi1sZXQgaXNDb25zdHJ1Y3RvciA9IGNyZWF0ZUJ1aWx0aW4oIihm
dW5jdGlvbihjKSB7IHJldHVybiBAaXNDb25zdHJ1Y3RvcihjKTsgfSkiKTsKK2xldCBpc0NvbnN0
cnVjdG9yID0gY3JlYXRlQnVpbHRpbigiKGZ1bmN0aW9uIChjKSB7IHJldHVybiBAaXNDb25zdHJ1
Y3RvcihjKTsgfSkiKTsKIAogLy8gRnVuY3Rpb25zLgogYXNzZXJ0KGlzQ29uc3RydWN0b3IoYXNz
ZXJ0KSk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy90YWlsQ2FsbEZvcndhcmRBcmd1bWVudHMuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvdGFpbENhbGxGb3J3YXJkQXJndW1lbnRzLmpz
CShyZXZpc2lvbiAyMzMzNTkpCisrKyBKU1Rlc3RzL3N0cmVzcy90YWlsQ2FsbEZvcndhcmRBcmd1
bWVudHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiB2YXIgY3JlYXRlQnVpbHRp
biA9ICR2bS5jcmVhdGVCdWlsdGluOwogCiAvLyBUaGlzIGlzIHByZXR0eSBiYWQgYnV0IEkgbmVl
ZCBhIHByaXZhdGUgbmFtZS4KLXZhciBwdXRGdW5jVG9Qcml2YXRlTmFtZSA9IGNyZWF0ZUJ1aWx0
aW4oYChmdW5jdGlvbihmdW5jKSB7IEBhcnJheUl0ZXJhdG9ySXNEb25lID0gZnVuYyB9KWApCit2
YXIgcHV0RnVuY1RvUHJpdmF0ZU5hbWUgPSBjcmVhdGVCdWlsdGluKGAoZnVuY3Rpb24gKGZ1bmMp
IHsgQGFycmF5SXRlcmF0b3JJc0RvbmUgPSBmdW5jIH0pYCkKIHB1dEZ1bmNUb1ByaXZhdGVOYW1l
KGZ1bmN0aW9uIChhLGIpIHsgcmV0dXJuIGI7IH0pCiAKIGZ1bmN0aW9uIGNyZWF0ZVRhaWxDYWxs
Rm9yd2FyZGluZ0Z1bmNXaXRoKGJvZHksIHRoaXNWYWx1ZSkgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMzMzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTgtMDYtMjkgIFNhYW0g
QmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgV2Ugc2hvdWxkbid0IHJlY3Vy
c2UgaW50byB0aGUgcGFyc2VyIHdoZW4gZ2F0aGVyaW5nIG1ldGFkYXRhIGFib3V0IHZhcmlvdXMg
ZnVuY3Rpb24gb2Zmc2V0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg0MDc0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNzE2NTg5Nz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4KKworICAgICAgICBQcmlvciB0byB0aGlzIHBhdGNo
LCB3aGVuIHdlIG1hZGUgYSBidWlsdGluLCB3ZSBoYWQgdG8gbWFrZSBhbiBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZQorICAgICAgICBmb3IgdGhhdCBidWlsdGluLiBUaGlzIHJlcXVpcmVkIGNh
bGxpbmcgaW50byB0aGUgcGFyc2VyLiBIb3dldmVyLCB0aGUgcGFyc2VyCisgICAgICAgIG1heSB0
aHJvdyBhIHN0YWNrIG92ZXJmbG93LiBXZSB3ZXJlIG5vdCBhYmxlIHRvIHJlY292ZXIgZnJvbSB0
aGF0LiBUaGUgb25seQorICAgICAgICByZWFzb24gd2UgY2FsbGVkIGludG8gdGhlIHBhcnNlciBo
ZXJlIGlzIHRoYXQgd2Ugd2VyZSBnYXRoZXJpbmcgdGV4dCBvZmZzZXRzCisgICAgICAgIGFuZCB2
YXJpb3VzIG1ldGFkYXRhIGZvciB0aGluZ3MgaW4gdGhlIGJ1aWx0aW4gZnVuY3Rpb24uIFRoaXMg
cGF0Y2ggd3JpdGVzIGEKKyAgICAgICAgbWluaSBwYXJzZXIgdGhhdCBmaWd1cmVzIHRoaXMgaW5m
b3JtYXRpb24gb3V0IHdpdGhvdXQgY2FsbGluZyBpbnRvIHRoZSBmdWxsCisgICAgICAgIHBhcnNl
ci4gKEkndmUgYWxzbyBhZGRlZCBhIGRlYnVnIGFzc2VydCB0aGF0IHZlcmlmaWVzIHRoZSBtaW5p
IHBhcnNlciBzdGF5cyBpbgorICAgICAgICBzeW5jIHdpdGggdGhlIGZ1bGwgcGFyc2VyLikgVGhl
IHJlc3VsdCBvZiB0aGlzIGlzIHRoYXQgQnVpbHRpbkV4ZWN1dGJsZXM6OmNyZWF0ZUV4ZWN1dGFi
bGUKKyAgICAgICAgYWx3YXlzIHN1Y2NlZWRzLgorCisgICAgICAgICogYnVpbHRpbnMvQXN5bmNG
cm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5jcmVh
dGVBc3luY0Zyb21TeW5jSXRlcmF0b3IpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5Bc3luY0Zy
b21TeW5jSXRlcmF0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVF
eGVjdXRhYmxlKToKKyAgICAgICAgKiBidWlsdGlucy9HbG9iYWxPcGVyYXRpb25zLmpzOgorICAg
ICAgICAoZ2xvYmFsUHJpdmF0ZS5nZXR0ZXIub3ZlcnJpZGRlbk5hbWUuc3RyaW5nX2FwcGVhcmVk
X2hlcmUuc3BlY2llc0dldHRlcik6CisgICAgICAgIChnbG9iYWxQcml2YXRlLnNwZWNpZXNDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmNvcHlEYXRhUHJvcGVydGllcyk6Cisg
ICAgICAgIChnbG9iYWxQcml2YXRlLmNvcHlEYXRhUHJvcGVydGllc05vRXhjbHVzaW9ucyk6Cisg
ICAgICAgICogYnVpbHRpbnMvUHJvbWlzZU9wZXJhdGlvbnMuanM6CisgICAgICAgIChnbG9iYWxQ
cml2YXRlLm5ld0hhbmRsZWRSZWplY3RlZFByb21pc2UpOgorICAgICAgICAqIGJ1aWx0aW5zL1Jl
Z0V4cFByb3RvdHlwZS5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuaGFzT2JzZXJ2YWJsZVNp
ZGVFZmZlY3RzRm9yUmVnRXhwTWF0Y2gpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5oYXNPYnNl
cnZhYmxlU2lkZUVmZmVjdHNGb3JSZWdFeHBTcGxpdCk6CisgICAgICAgICogYnVpbHRpbnMvU3Ry
aW5nUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5oYXNPYnNlcnZhYmxlU2lk
ZUVmZmVjdHNGb3JTdHJpbmdSZXBsYWNlKToKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuZ2V0RGVm
YXVsdENvbGxhdG9yKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAgICAgICAoSlND
OjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBwYXJzZXIv
Tm9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OnBhcnNl
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyRXJyb3IuaDoKKyAgICAgICAgKEpTQzo6UGFyc2Vy
RXJyb3I6OnR5cGUgY29uc3QpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJUb2tlbnMuaDoKKyAg
ICAgICAgKEpTQzo6SlNUZXh0UG9zaXRpb246Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAo
SlNDOjpKU1RleHRQb3NpdGlvbjo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgICogcGFyc2Vy
L1NvdXJjZUNvZGUuaDoKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZTo6b3BlcmF0b3I9PSBjb25z
dCk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGU6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAg
ICAoSlNDOjpTb3VyY2VDb2RlOjpzdWJFeHByZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
U291cmNlQ29kZTo6c3ViRXhwcmVzc2lvbik6IERlbGV0ZWQuCisKIDIwMTgtMDYtMjggIE1pY2hh
ZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAgIAogICAgICAgICBJc29DZWxsU2V0Ojpz
d2VlcFRvRnJlZUxpc3QoKSBub3Qgc2FmZSB3aGVuIEZ1bGwgR0MgaW4gcHJvY2VzcwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3Rv
dHlwZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5
bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmpzCShyZXZpc2lvbiAyMzMzNTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBl
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsNiArMTUxLDggQEAgZnVuY3Rpb24gdGhyb3coZXhj
ZXB0aW9uKQogQGdsb2JhbFByaXZhdGUKIGZ1bmN0aW9uIGNyZWF0ZUFzeW5jRnJvbVN5bmNJdGVy
YXRvcihzeW5jSXRlcmF0b3IsIG5leHRNZXRob2QpCiB7CisgICAgInVzZSBzdHJpY3QiOworCiAg
ICAgaWYgKCFAaXNPYmplY3Qoc3luY0l0ZXJhdG9yKSkKICAgICAgICAgQHRocm93VHlwZUVycm9y
KCdPbmx5IG9iamVjdHMgY2FuIGJlIHdyYXBwZWQgYnkgYXN5bmMtZnJvbS1zeW5jIHdyYXBwZXIn
KTsKIApAQCAtMTYxLDYgKzE2Myw4IEBAIGZ1bmN0aW9uIGNyZWF0ZUFzeW5jRnJvbVN5bmNJdGVy
YXRvcihzeW4KIEBjb25zdHJ1Y3RvcgogZnVuY3Rpb24gQXN5bmNGcm9tU3luY0l0ZXJhdG9yQ29u
c3RydWN0b3Ioc3luY0l0ZXJhdG9yLCBuZXh0TWV0aG9kKQogeworICAgICJ1c2Ugc3RyaWN0IjsK
KwogICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAic3luY0l0ZXJhdG9yIiwgc3luY0l0
ZXJhdG9yKTsKICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUodGhpcywgIm5leHRNZXRob2QiLCBu
ZXh0TWV0aG9kKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluRXhlY3V0YWJsZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCShyZXZpc2lvbiAyMzMzNTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODUsNDAgKzg1LDE3NCBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
Y3JlYXRlQnVpbHRpCiAKIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0
YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IGNvbnN0IElkZW50aWZpZXImIG5hbWUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQs
IENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSkKIHsKKyAgICAvLyBTb21lb25lIHNo
b3VsZCBnZXQgbWFkIGF0IG1lIGZvciB3cml0aW5nIHRoaXMgY29kZS4gQnV0LCBpdCBwcmV2ZW50
cyB1cyBmcm9tIHJlY3Vyc2luZyBpbnRvCisgICAgLy8gdGhlIHBhcnNlciwgYW5kIGhlbmNlLCBm
cm9tIHRocm93aW5nIE9PTS9zdGFjayBvdmVyZmxvdyB3aGVuIHBhcnNpbmcgYSBidWlsdGluLgor
ICAgIFN0cmluZ1ZpZXcgdmlldyA9IHNvdXJjZS52aWV3KCk7CisgICAgUkVMRUFTRV9BU1NFUlQo
IXZpZXcuaXNOdWxsKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHZpZXcuaXM4Qml0KCkpOworICAg
IGF1dG8qIGNoYXJhY3RlcnMgPSB2aWV3LmNoYXJhY3RlcnM4KCk7CisgICAgUkVMRUFTRV9BU1NF
UlQodmlldy5sZW5ndGgoKSA+PSAxNSk7IC8vIHN0cmxlbigiKGZ1bmN0aW9uICgpe30pIikgPT0g
MTUKKyAgICBSRUxFQVNFX0FTU0VSVChjaGFyYWN0ZXJzWzBdID09ICAnKCcpOworICAgIFJFTEVB
U0VfQVNTRVJUKGNoYXJhY3RlcnNbMV0gPT0gICdmJyk7CisgICAgUkVMRUFTRV9BU1NFUlQoY2hh
cmFjdGVyc1syXSA9PSAgJ3UnKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjaGFyYWN0ZXJzWzNdID09
ICAnbicpOworICAgIFJFTEVBU0VfQVNTRVJUKGNoYXJhY3RlcnNbNF0gPT0gICdjJyk7CisgICAg
UkVMRUFTRV9BU1NFUlQoY2hhcmFjdGVyc1s1XSA9PSAgJ3QnKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChjaGFyYWN0ZXJzWzZdID09ICAnaScpOworICAgIFJFTEVBU0VfQVNTRVJUKGNoYXJhY3RlcnNb
N10gPT0gICdvJyk7CisgICAgUkVMRUFTRV9BU1NFUlQoY2hhcmFjdGVyc1s4XSA9PSAgJ24nKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChjaGFyYWN0ZXJzWzldID09ICAnICcpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGNoYXJhY3RlcnNbMTBdID09ICcoJyk7CisKKyAgICBKU1Rva2VuTG9jYXRpb24gc3Rh
cnQ7CisgICAgc3RhcnQubGluZSA9IC0xOworICAgIHN0YXJ0LmxpbmVTdGFydE9mZnNldCA9IC0x
OworICAgIHN0YXJ0LnN0YXJ0T2Zmc2V0ID0gMTA7CisgICAgc3RhcnQuZW5kT2Zmc2V0ID0gLTE7
CisKKyAgICBKU1Rva2VuTG9jYXRpb24gZW5kOworICAgIGVuZC5saW5lID0gMTsKKyAgICBlbmQu
bGluZVN0YXJ0T2Zmc2V0ID0gMDsKKyAgICBlbmQuc3RhcnRPZmZzZXQgPSAxOworICAgIGVuZC5l
bmRPZmZzZXQgPSAtMTsKKworICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gMTA7IC8vIHN0cmxl
bigiZnVuY3Rpb24gKCIpID09IDEwCisgICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0ID0gMTsg
Ly8gKGYKKyAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQgPSAxMDsKKyAgICBpbnQgcGFyYW1ldGVy
c1N0YXJ0ID0gMTA7CisgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCA9IGZhbHNlOworICAgIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBmYWxzZTsKKworICAgIHVuc2lnbmVk
IHBhcmFtZXRlckNvdW50OworICAgIHsKKyAgICAgICAgdW5zaWduZWQgaSA9IDExOworICAgICAg
ICB1bnNpZ25lZCBjb21tYXMgPSAwOworICAgICAgICBib29sIHNhd09uZVBhcmFtID0gZmFsc2U7
CisgICAgICAgIGJvb2wgaGFzUmVzdFBhcmFtID0gZmFsc2U7CisgICAgICAgIHdoaWxlICh0cnVl
KSB7CisgICAgICAgICAgICBBU1NFUlQoaSA8IHZpZXcubGVuZ3RoKCkpOworICAgICAgICAgICAg
aWYgKGNoYXJhY3RlcnNbaV0gPT0gJyknKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICBpZiAoY2hhcmFjdGVyc1tpXSA9PSAnLCcpCisgICAgICAgICAgICAgICAgKytjb21t
YXM7CisgICAgICAgICAgICBlbHNlIGlmICghTGV4ZXI8TENoYXI+Ojppc1doaXRlU3BhY2UoY2hh
cmFjdGVyc1tpXSkpCisgICAgICAgICAgICAgICAgc2F3T25lUGFyYW0gPSB0cnVlOworCisgICAg
ICAgICAgICBpZiAoaSArIDIgPCB2aWV3Lmxlbmd0aCgpICYmIGNoYXJhY3RlcnNbaV0gPT0gJy4n
ICYmIGNoYXJhY3RlcnNbaSArIDFdID09ICcuJyAmJiBjaGFyYWN0ZXJzW2kgKyAyXSA9PSAnLicp
IHsKKyAgICAgICAgICAgICAgICBoYXNSZXN0UGFyYW0gPSB0cnVlOworICAgICAgICAgICAgICAg
IGkgKz0gMjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgKytpOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGNvbW1hcykKKyAgICAgICAgICAgIHBhcmFtZXRlckNvdW50ID0gY29tbWFz
ICsgMTsKKyAgICAgICAgZWxzZSBpZiAoc2F3T25lUGFyYW0pCisgICAgICAgICAgICBwYXJhbWV0
ZXJDb3VudCA9IDE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcmFtZXRlckNvdW50ID0g
MDsKKworICAgICAgICBpZiAoaGFzUmVzdFBhcmFtKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChwYXJhbWV0ZXJDb3VudCk7CisgICAgICAgICAgICAtLXBhcmFtZXRlckNvdW50OworICAg
ICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgbGluZUNvdW50ID0gMDsKKyAgICB1bnNpZ25l
ZCBlbmRDb2x1bW4gPSAwOworICAgIHVuc2lnbmVkIG9mZnNldE9mTGFzdE5ld2xpbmUgPSAwOwor
ICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG9mZnNldE9mU2Vjb25kVG9MYXN0TmV3bGluZTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmlldy5sZW5ndGgoKTsgKytpKSB7CisgICAg
ICAgIGlmIChjaGFyYWN0ZXJzW2ldID09ICdcbicpIHsKKyAgICAgICAgICAgIGlmIChsaW5lQ291
bnQpCisgICAgICAgICAgICAgICAgb2Zmc2V0T2ZTZWNvbmRUb0xhc3ROZXdsaW5lID0gb2Zmc2V0
T2ZMYXN0TmV3bGluZTsKKyAgICAgICAgICAgICsrbGluZUNvdW50OworICAgICAgICAgICAgZW5k
Q29sdW1uID0gMDsKKyAgICAgICAgICAgIG9mZnNldE9mTGFzdE5ld2xpbmUgPSBpOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICsrZW5kQ29sdW1uOworCisgICAgICAgIGlmICghaXNJblN0
cmljdENvbnRleHQgJiYgKGNoYXJhY3RlcnNbaV0gPT0gJyInIHx8IGNoYXJhY3RlcnNbaV0gPT0g
J1wnJykpIHsKKyAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHVzZVN0cmljdExlbmd0aCA9IHN0
cmxlbigidXNlIHN0cmljdCIpOworICAgICAgICAgICAgaWYgKGkgKyAxICsgdXNlU3RyaWN0TGVu
Z3RoIDwgdmlldy5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGlmICghbWVtY21wKGNoYXJh
Y3RlcnMgKyBpICsgMSwgInVzZSBzdHJpY3QiLCB1c2VTdHJpY3RMZW5ndGgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlzSW5TdHJpY3RDb250ZXh0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgaSArPSAxICsgdXNlU3RyaWN0TGVuZ3RoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHVuc2lnbmVkIHBvc2l0aW9uQmVmb3JlTGFz
dE5ld2xpbmVMaW5lU3RhcnRPZmZzZXQgPSBvZmZzZXRPZlNlY29uZFRvTGFzdE5ld2xpbmUgPyAq
b2Zmc2V0T2ZTZWNvbmRUb0xhc3ROZXdsaW5lICsgMSA6IDA7CisKKyAgICBpbnQgY2xvc2VCcmFj
ZU9mZnNldEZyb21FbmQgPSAxOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGlmIChjaGFy
YWN0ZXJzW3ZpZXcubGVuZ3RoKCkgLSBjbG9zZUJyYWNlT2Zmc2V0RnJvbUVuZF0gPT0gJ30nKQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICsrY2xvc2VCcmFjZU9mZnNldEZyb21FbmQ7Cisg
ICAgfQorCiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKLSAg
ICBQYXJzZXJFcnJvciBlcnJvcjsKKyAgICBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lLmxpbmUg
PSBsaW5lQ291bnQ7CisgICAgcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZS5vZmZzZXQgPSBvZmZz
ZXRPZkxhc3ROZXdsaW5lOworICAgIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUubGluZVN0YXJ0
T2Zmc2V0ID0gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZUxpbmVTdGFydE9mZnNldDsKKworICAg
IFNvdXJjZUNvZGUgbmV3U291cmNlID0gc291cmNlLnN1YkV4cHJlc3Npb24oMTAsIHZpZXcubGVu
Z3RoKCkgLSBjbG9zZUJyYWNlT2Zmc2V0RnJvbUVuZCwgMCwgMTApOwogICAgIGJvb2wgaXNCdWls
dGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcktpbmQgIT0gQ29uc3RydWN0
b3JLaW5kOjpOb25lOwotICAgIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUgPSBpc0J1
aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1
aWx0aW4gOiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluOwogICAgIFVubGlua2VkRnVuY3Rp
b25LaW5kIGtpbmQgPSBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA/IFVubGlua2Vk
Tm9ybWFsRnVuY3Rpb24gOiBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbjsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oCi0gICAgICAg
ICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLAotICAgICAgICBKU1BhcnNl
clN0cmljdE1vZGU6Ok5vdFN0cmljdCwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTb3Vy
Y2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3Is
Ci0gICAgICAgICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lLCBjb25zdHJ1Y3RvcktpbmQpOwot
Ci0gICAgaWYgKCFwcm9ncmFtKSB7Ci0gICAgICAgIGRhdGFMb2coIkZhdGFsIGVycm9yIGNvbXBp
bGluZyBidWlsdGluIGZ1bmN0aW9uICciLCBuYW1lLnN0cmluZygpLCAiJzogIiwgZXJyb3IubWVz
c2FnZSgpKTsKLSAgICAgICAgQ1JBU0goKTsKKworICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlIG1l
dGFkYXRhKAorICAgICAgICBzdGFydCwgZW5kLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5j
dGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwKKyAg
ICAgICAgaXNJblN0cmljdENvbnRleHQsIGNvbnN0cnVjdG9yS2luZCwgY29uc3RydWN0b3JLaW5k
ID09IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyA/IFN1cGVyQmluZGluZzo6TmVlZGVkIDogU3Vw
ZXJCaW5kaW5nOjpOb3ROZWVkZWQsCisgICAgICAgIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJz
ZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24p
OworCisgICAgbWV0YWRhdGEuZmluaXNoUGFyc2luZyhuZXdTb3VyY2UsIElkZW50aWZpZXIoKSwg
RnVuY3Rpb25Nb2RlOjpGdW5jdGlvbkV4cHJlc3Npb24pOworICAgIG1ldGFkYXRhLm92ZXJyaWRl
TmFtZShuYW1lKTsKKyAgICBtZXRhZGF0YS5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lKTsKKworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEIHx8IE9wdGlvbnM6OnZhbGlk
YXRlQnl0ZWNvZGUoKSkgeworICAgICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lRnJvbVBhcnNlcjsKKyAgICAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CisgICAgICAg
IEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUgPSBpc0J1aWx0aW5EZWZhdWx0Q2xhc3ND
b25zdHJ1Y3RvciA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4gOiBKU1BhcnNlckJ1
aWx0aW5Nb2RlOjpCdWlsdGluOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+
IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oCisgICAgICAgICAgICAmdm0sIHNvdXJjZSwg
SWRlbnRpZmllcigpLCBidWlsdGluTW9kZSwKKyAgICAgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZTo6Tm90U3RyaWN0LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFNvdXJjZVBhcnNlTW9k
ZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwKKyAgICAgICAg
ICAgICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lRnJvbVBhcnNlciwgY29uc3RydWN0b3JLaW5k
KTsKKworICAgICAgICBpZiAocHJvZ3JhbSkgeworICAgICAgICAgICAgU3RhdGVtZW50Tm9kZSog
ZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVudCgpOworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudCk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChleHByU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgICAgICAgICBFeHByZXNz
aW9uTm9kZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KGV4cHJT
dGF0ZW1lbnQpLT5leHByKCk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwcik7
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwci0+aXNGdW5jRXhwck5vZGUoKSk7
CisgICAgICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbWV0YWRhdGFGcm9tUGFyc2VyID0g
c3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZnVuY0V4cHIpLT5tZXRhZGF0YSgpOworICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIXByb2dyYW0tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBtZXRhZGF0YUZyb21QYXJzZXItPnNldEVuZFBvc2l0
aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmVGcm9tUGFyc2VyKTsKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG1ldGFkYXRhRnJvbVBhcnNlcik7CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChtZXRhZGF0YUZyb21QYXJzZXItPmlkZW50KCkuaXNOdWxsKCkpOworICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgYW4gaW5wdXQgc3RyaW5nIHRo
YXQgd291bGQgcmVzdWx0IGluIGEgc2luZ2xlIGFub255bW91cyBmdW5jdGlvbiBleHByZXNzaW9u
LgorICAgICAgICAgICAgbWV0YWRhdGFGcm9tUGFyc2VyLT5zZXRFbmRQb3NpdGlvbihwb3NpdGlv
bkJlZm9yZUxhc3ROZXdsaW5lRnJvbVBhcnNlcik7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChtZXRhZGF0YUZyb21QYXJzZXIpOworICAgICAgICAgICAgbWV0YWRhdGFGcm9tUGFyc2VyLT5v
dmVycmlkZU5hbWUobmFtZSk7CisgICAgICAgICAgICBtZXRhZGF0YUZyb21QYXJzZXItPnNldEVu
ZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmVGcm9tUGFyc2VyKTsKKworICAgICAg
ICAgICAgaWYgKG1ldGFkYXRhICE9ICptZXRhZGF0YUZyb21QYXJzZXIgfHwgcG9zaXRpb25CZWZv
cmVMYXN0TmV3bGluZUZyb21QYXJzZXIgIT0gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkgewor
ICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiTWV0YWRhdGEgb2YgcGFyc2VyIGFuZCBoYW5k
IHJvbGxlZCBwYXJzZXIgZG9uJ3QgbWF0Y2hcbiIpOworICAgICAgICAgICAgICAgIENSQVNIKCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChlcnJvci5pc1ZhbGlkKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXJyb3Iu
dHlwZSgpID09IFBhcnNlckVycm9yOjpTdGFja092ZXJmbG93KTsKKyAgICAgICAgfQogICAgIH0K
IAotICAgIFN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBwcm9ncmFtLT5zaW5nbGVTdGF0
ZW1lbnQoKTsKLSAgICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVtZW50KTsKLSAgICBSRUxFQVNF
X0FTU0VSVChleHByU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7Ci0gICAgRXhwcmVzc2lv
bk5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihleHByU3Rh
dGVtZW50KS0+ZXhwcigpOwotICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHByKTsKLSAgICBSRUxF
QVNFX0FTU0VSVChmdW5jRXhwci0+aXNGdW5jRXhwck5vZGUoKSk7Ci0gICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIG1ldGFkYXRhID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZnVuY0V4cHIp
LT5tZXRhZGF0YSgpOwotICAgIFJFTEVBU0VfQVNTRVJUKCFwcm9ncmFtLT5oYXNDYXB0dXJlZFZh
cmlhYmxlcygpKTsKLSAgICAKLSAgICBtZXRhZGF0YS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25C
ZWZvcmVMYXN0TmV3bGluZSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobWV0YWRhdGEpOwotICAgIFJF
TEVBU0VfQVNTRVJUKG1ldGFkYXRhLT5pZGVudCgpLmlzTnVsbCgpKTsKLSAgICAKLSAgICAvLyBU
aGlzIGZ1bmN0aW9uIGFzc3VtZXMgYW4gaW5wdXQgc3RyaW5nIHRoYXQgd291bGQgcmVzdWx0IGlu
IGEgc2luZ2xlIGFub255bW91cyBmdW5jdGlvbiBleHByZXNzaW9uLgotICAgIG1ldGFkYXRhLT5z
ZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKLSAgICBSRUxFQVNFX0FT
U0VSVChtZXRhZGF0YSk7Ci0gICAgbWV0YWRhdGEtPm92ZXJyaWRlTmFtZShuYW1lKTsKICAgICBW
YXJpYWJsZUVudmlyb25tZW50IGR1bW15VERaVmFyaWFibGVzOwotICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0
eSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBkdW1teVREWlZhcmlhYmxlcywgRGVyaXZl
ZENvbnRleHRUeXBlOjpOb25lLCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7Cisg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsICZtZXRhZGF0YSwga2lu
ZCwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBkdW1teVRE
WlZhcmlhYmxlcywgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBpc0J1aWx0aW5EZWZhdWx0Q2xh
c3NDb25zdHJ1Y3Rvcik7CiAgICAgcmV0dXJuIGZ1bmN0aW9uRXhlY3V0YWJsZTsKIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dsb2JhbE9wZXJhdGlvbnMuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dsb2JhbE9wZXJhdGlv
bnMuanMJKHJldmlzaW9uIDIzMzM1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9HbG9iYWxPcGVyYXRpb25zLmpzCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxMiArNjIsMTUgQEAg
ZnVuY3Rpb24gaXNEaWN0aW9uYXJ5KG9iamVjdCkKIEBvdmVycmlkZGVuTmFtZT0iZ2V0IFtTeW1i
b2wuc3BlY2llc10iCiBmdW5jdGlvbiBzcGVjaWVzR2V0dGVyKCkKIHsKKyAgICAidXNlIHN0cmlj
dCI7CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKIEBnbG9iYWxQcml2YXRlCiBmdW5jdGlvbiBzcGVj
aWVzQ29uc3RydWN0b3Iob2JqLCBkZWZhdWx0Q29uc3RydWN0b3IpCiB7CisgICAgInVzZSBzdHJp
Y3QiOworCiAgICAgdmFyIGNvbnN0cnVjdG9yID0gb2JqLmNvbnN0cnVjdG9yOwogICAgIGlmIChj
b25zdHJ1Y3RvciA9PT0gQHVuZGVmaW5lZCkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRDb25zdHJ1
Y3RvcjsKQEAgLTg0LDYgKzg3LDggQEAgZnVuY3Rpb24gc3BlY2llc0NvbnN0cnVjdG9yKG9iaiwg
ZGVmYXVsdAogQGdsb2JhbFByaXZhdGUKIGZ1bmN0aW9uIGNvcHlEYXRhUHJvcGVydGllcyh0YXJn
ZXQsIHNvdXJjZSwgZXhjbHVkZWRTZXQpCiB7CisgICAgInVzZSBzdHJpY3QiOworCiAgICAgaWYg
KCFAaXNPYmplY3QodGFyZ2V0KSkKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJ0YXJnZXQgbmVl
ZHMgdG8gYmUgYW4gb2JqZWN0Iik7CiAKQEAgLTEwOSw2ICsxMTQsOCBAQCBmdW5jdGlvbiBjb3B5
RGF0YVByb3BlcnRpZXModGFyZ2V0LCBzb3VyCiBAZ2xvYmFsUHJpdmF0ZQogZnVuY3Rpb24gY29w
eURhdGFQcm9wZXJ0aWVzTm9FeGNsdXNpb25zKHRhcmdldCwgc291cmNlKQogeworICAgICJ1c2Ug
c3RyaWN0IjsKKwogICAgIGlmICghQGlzT2JqZWN0KHRhcmdldCkpCiAgICAgICAgIEB0aHJvd1R5
cGVFcnJvcigidGFyZ2V0IG5lZWRzIHRvIGJlIGFuIG9iamVjdCIpOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZU9wZXJhdGlvbnMuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VPcGVyYXRpb25zLmpzCShy
ZXZpc2lvbiAyMzMzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlz
ZU9wZXJhdGlvbnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTg3LDYgKzg3LDcgQEAgZnVuY3Rpb24g
bmV3UHJvbWlzZUNhcGFiaWxpdHkoY29uc3RydWN0bwogQGdsb2JhbFByaXZhdGUKIGZ1bmN0aW9u
IG5ld0hhbmRsZWRSZWplY3RlZFByb21pc2UoZXJyb3IpCiB7CisgICAgInVzZSBzdHJpY3QiOwog
ICAgIGxldCBwcm9taXNlID0gQFByb21pc2UuQHJlamVjdChlcnJvcik7CiAgICAgQHB1dEJ5SWRE
aXJlY3RQcml2YXRlKHByb21pc2UsICJwcm9taXNlSXNIYW5kbGVkIiwgdHJ1ZSk7CiAgICAgcmV0
dXJuIHByb21pc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUmVnRXhw
UHJvdG90eXBlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9SZWdFeHBQcm90b3R5cGUuanMJKHJldmlzaW9uIDIzMzM1OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9SZWdFeHBQcm90b3R5cGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTYz
LDcgKzYzLDEwIEBAIGZ1bmN0aW9uIHJlZ0V4cEV4ZWMocmVnZXhwLCBzdHIpCiB9CiAKIEBnbG9i
YWxQcml2YXRlCi1mdW5jdGlvbiBoYXNPYnNlcnZhYmxlU2lkZUVmZmVjdHNGb3JSZWdFeHBNYXRj
aChyZWdleHApIHsKK2Z1bmN0aW9uIGhhc09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclJlZ0V4cE1h
dGNoKHJlZ2V4cCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKICAgICAvLyBUaGlzIGlzIGFjY2Vz
c2VkIGJ5IHRoZSBSZWdFeHBFeGVjIGludGVybmFsIGZ1bmN0aW9uLgogICAgIGxldCByZWdleHBF
eGVjID0gQHRyeUdldEJ5SWQocmVnZXhwLCAiZXhlYyIpOwogICAgIGlmIChyZWdleHBFeGVjICE9
PSBAcmVnRXhwQnVpbHRpbkV4ZWMpCkBAIC0zNTEsNyArMzU0LDEwIEBAIGZ1bmN0aW9uIHNlYXJj
aChzdHJBcmcpCiB9CiAKIEBnbG9iYWxQcml2YXRlCi1mdW5jdGlvbiBoYXNPYnNlcnZhYmxlU2lk
ZUVmZmVjdHNGb3JSZWdFeHBTcGxpdChyZWdleHApIHsKK2Z1bmN0aW9uIGhhc09ic2VydmFibGVT
aWRlRWZmZWN0c0ZvclJlZ0V4cFNwbGl0KHJlZ2V4cCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisK
ICAgICAvLyBUaGlzIGlzIGFjY2Vzc2VkIGJ5IHRoZSBSZWdFeHBFeGVjIGludGVybmFsIGZ1bmN0
aW9uLgogICAgIGxldCByZWdleHBFeGVjID0gQHRyeUdldEJ5SWQocmVnZXhwLCAiZXhlYyIpOwog
ICAgIGlmIChyZWdleHBFeGVjICE9PSBAcmVnRXhwQnVpbHRpbkV4ZWMpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU3RyaW5nUHJvdG90eXBlLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TdHJpbmdQcm90b3R5cGUuanMJKHJldmlz
aW9uIDIzMzM1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TdHJpbmdQcm90
b3R5cGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw3ICsxOTEsMTAgQEAgZnVuY3Rpb24gcGFk
RW5kKG1heExlbmd0aC8qLCBmaWxsU3RyaW5nKgogfQogCiBAZ2xvYmFsUHJpdmF0ZQotZnVuY3Rp
b24gaGFzT2JzZXJ2YWJsZVNpZGVFZmZlY3RzRm9yU3RyaW5nUmVwbGFjZShyZWdleHAsIHJlcGxh
Y2VyKSB7CitmdW5jdGlvbiBoYXNPYnNlcnZhYmxlU2lkZUVmZmVjdHNGb3JTdHJpbmdSZXBsYWNl
KHJlZ2V4cCwgcmVwbGFjZXIpCit7CisgICAgInVzZSBzdHJpY3QiOworCiAgICAgaWYgKHJlcGxh
Y2VyICE9PSBAcmVnRXhwUHJvdG90eXBlU3ltYm9sUmVwbGFjZSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgCkBAIC0yMzUsNiArMjM4LDggQEAgZnVuY3Rpb24gcmVwbGFjZShzZWFyY2gsIHJl
cGxhY2UpCiBAZ2xvYmFsUHJpdmF0ZQogZnVuY3Rpb24gZ2V0RGVmYXVsdENvbGxhdG9yKCkKIHsK
KyAgICAidXNlIHN0cmljdCI7CisKICAgICByZXR1cm4gQGdldERlZmF1bHRDb2xsYXRvci5jb2xs
YXRvciB8fCAoQGdldERlZmF1bHRDb2xsYXRvci5jb2xsYXRvciA9IG5ldyBAQ29sbGF0b3IoKSk7
CiB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAkocmV2
aXNpb24gMjMzMzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIxNCw2ICsyMTQsMjkgQEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6
OkZ1bmN0aW9uTWV0YWRhdGFObwogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7CiB9CiAKK0Z1bmN0aW9uTWV0YWRh
dGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSgKKyAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IHN0YXJ0TG9jYXRpb24sIAorICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24s
IHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIAorICAgIGludCBmdW5j
dGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0
YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKKyAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3Ry
dWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCB1bnNpZ25lZCBwYXJhbWV0ZXJD
b3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJl
c3Npb24pCisgICAgICAgIDogTm9kZShlbmRMb2NhdGlvbikKKyAgICAgICAgLCBtX3N0YXJ0Q29s
dW1uKHN0YXJ0Q29sdW1uKQorICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKKyAgICAg
ICAgLCBtX2Z1bmN0aW9uS2V5d29yZFN0YXJ0KGZ1bmN0aW9uS2V5d29yZFN0YXJ0KQorICAgICAg
ICAsIG1fZnVuY3Rpb25OYW1lU3RhcnQoZnVuY3Rpb25OYW1lU3RhcnQpCisgICAgICAgICwgbV9w
YXJhbWV0ZXJzU3RhcnQocGFyYW1ldGVyc1N0YXJ0KQorICAgICAgICAsIG1fc3RhcnRTdGFydE9m
ZnNldChzdGFydExvY2F0aW9uLnN0YXJ0T2Zmc2V0KQorICAgICAgICAsIG1fcGFyYW1ldGVyQ291
bnQocGFyYW1ldGVyQ291bnQpCisgICAgICAgICwgbV9wYXJzZU1vZGUobW9kZSkKKyAgICAgICAg
LCBtX2lzSW5TdHJpY3RDb250ZXh0KGlzSW5TdHJpY3RDb250ZXh0KQorICAgICAgICAsIG1fc3Vw
ZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKQorICAgICAgICAs
IG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQp
KQorICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24oaXNBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24pCit7CisgICAgQVNTRVJUKG1fc3VwZXJCaW5kaW5nID09IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKTsKKyAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOworfQorCiB2
b2lkIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpmaW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1v
ZGUpCiB7CiAgICAgbV9zb3VyY2UgPSBzb3VyY2U7CkBAIC0yMjcsNiArMjUwLDU1IEBAIHZvaWQg
RnVuY3Rpb25NZXRhZGF0YU5vZGU6OnNldEVuZFBvc2l0aW8KICAgICBtX2VuZENvbHVtbiA9IHBv
c2l0aW9uLm9mZnNldCAtIHBvc2l0aW9uLmxpbmVTdGFydE9mZnNldDsKIH0KIAorYm9vbCBGdW5j
dGlvbk1ldGFkYXRhTm9kZTo6b3BlcmF0b3I9PShjb25zdCBGdW5jdGlvbk1ldGFkYXRhTm9kZSYg
b3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faWRlbnQgPT0gb3RoZXIubV9pZGVudAorICAg
ICAgICAmJiBtX2VjbWFOYW1lID09IG90aGVyLm1fZWNtYU5hbWUKKyAgICAgICAgJiYgbV9pbmZl
cnJlZE5hbWUgPT0gb3RoZXIubV9pbmZlcnJlZE5hbWUKKyAgICAgICAgJiYgbV9mdW5jdGlvbk1v
ZGU9PSBvdGhlci5tX2Z1bmN0aW9uTW9kZQorICAgICAgICAmJiBtX3N0YXJ0Q29sdW1uPT0gb3Ro
ZXIubV9zdGFydENvbHVtbgorICAgICAgICAmJiBtX2VuZENvbHVtbj09IG90aGVyLm1fZW5kQ29s
dW1uCisgICAgICAgICYmIG1fZnVuY3Rpb25LZXl3b3JkU3RhcnQ9PSBvdGhlci5tX2Z1bmN0aW9u
S2V5d29yZFN0YXJ0CisgICAgICAgICYmIG1fZnVuY3Rpb25OYW1lU3RhcnQ9PSBvdGhlci5tX2Z1
bmN0aW9uTmFtZVN0YXJ0CisgICAgICAgICYmIG1fcGFyYW1ldGVyc1N0YXJ0PT0gb3RoZXIubV9w
YXJhbWV0ZXJzU3RhcnQKKyAgICAgICAgJiYgbV9zb3VyY2U9PSBvdGhlci5tX3NvdXJjZQorICAg
ICAgICAmJiBtX2NsYXNzU291cmNlPT0gb3RoZXIubV9jbGFzc1NvdXJjZQorICAgICAgICAmJiBt
X3N0YXJ0U3RhcnRPZmZzZXQ9PSBvdGhlci5tX3N0YXJ0U3RhcnRPZmZzZXQKKyAgICAgICAgJiYg
bV9wYXJhbWV0ZXJDb3VudD09IG90aGVyLm1fcGFyYW1ldGVyQ291bnQKKyAgICAgICAgJiYgbV9s
YXN0TGluZT09IG90aGVyLm1fbGFzdExpbmUKKyAgICAgICAgJiYgbV9wYXJzZU1vZGU9PSBvdGhl
ci5tX3BhcnNlTW9kZQorICAgICAgICAmJiBtX2lzSW5TdHJpY3RDb250ZXh0ID09IG90aGVyLm1f
aXNJblN0cmljdENvbnRleHQgCisgICAgICAgICYmIG1fc3VwZXJCaW5kaW5nID09IG90aGVyLm1f
c3VwZXJCaW5kaW5nIAorICAgICAgICAmJiBtX2NvbnN0cnVjdG9yS2luZCA9PSBvdGhlci5tX2Nv
bnN0cnVjdG9yS2luZCAKKyAgICAgICAgJiYgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
biA9PSBvdGhlci5tX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uCisgICAgICAgICYmIG1f
cG9zaXRpb24gPT0gb3RoZXIubV9wb3NpdGlvbjsKK30KKwordm9pZCBGdW5jdGlvbk1ldGFkYXRh
Tm9kZTo6ZHVtcChQcmludFN0cmVhbSYgc3RyZWFtKSBjb25zdAoreworICAgIHN0cmVhbS5wcmlu
dGxuKCJtX2lkZW50ICIsIG1faWRlbnQpOworICAgIHN0cmVhbS5wcmludGxuKCJtX2VjbWFOYW1l
ICIsIG1fZWNtYU5hbWUpOworICAgIHN0cmVhbS5wcmludGxuKCJtX2luZmVycmVkTmFtZSAiLCBt
X2luZmVycmVkTmFtZSk7CisgICAgc3RyZWFtLnByaW50bG4oIm1fZnVuY3Rpb25Nb2RlICIsIHN0
YXRpY19jYXN0PHVpbnQzMl90PihtX2Z1bmN0aW9uTW9kZSkpOworICAgIHN0cmVhbS5wcmludGxu
KCJtX3N0YXJ0Q29sdW1uICIsIG1fc3RhcnRDb2x1bW4pOworICAgIHN0cmVhbS5wcmludGxuKCJt
X2VuZENvbHVtbiAiLCBtX2VuZENvbHVtbik7CisgICAgc3RyZWFtLnByaW50bG4oIm1fZnVuY3Rp
b25LZXl3b3JkU3RhcnQgIiwgbV9mdW5jdGlvbktleXdvcmRTdGFydCk7CisgICAgc3RyZWFtLnBy
aW50bG4oIm1fZnVuY3Rpb25OYW1lU3RhcnQgIiwgbV9mdW5jdGlvbk5hbWVTdGFydCk7CisgICAg
c3RyZWFtLnByaW50bG4oIm1fcGFyYW1ldGVyc1N0YXJ0ICIsIG1fcGFyYW1ldGVyc1N0YXJ0KTsK
KyAgICBzdHJlYW0ucHJpbnRsbigibV9jbGFzc1NvdXJjZS5pc051bGwoKSAiLCBtX2NsYXNzU291
cmNlLmlzTnVsbCgpKTsKKyAgICBzdHJlYW0ucHJpbnRsbigibV9zdGFydFN0YXJ0T2Zmc2V0ICIs
IG1fc3RhcnRTdGFydE9mZnNldCk7CisgICAgc3RyZWFtLnByaW50bG4oIm1fcGFyYW1ldGVyQ291
bnQgIiwgbV9wYXJhbWV0ZXJDb3VudCk7CisgICAgc3RyZWFtLnByaW50bG4oIm1fbGFzdExpbmUg
IiwgbV9sYXN0TGluZSk7CisgICAgc3RyZWFtLnByaW50bG4oIm1fcGFyc2VNb2RlICIsIHN0YXRp
Y19jYXN0PHVpbnQzMl90PihtX3BhcnNlTW9kZSkpOworICAgIHN0cmVhbS5wcmludGxuKCJtX2lz
SW5TdHJpY3RDb250ZXh0ICIsIG1faXNJblN0cmljdENvbnRleHQpOworICAgIHN0cmVhbS5wcmlu
dGxuKCJtX3N1cGVyQmluZGluZyAiLCBtX3N1cGVyQmluZGluZyk7CisgICAgc3RyZWFtLnByaW50
bG4oIm1fY29uc3RydWN0b3JLaW5kICIsIG1fY29uc3RydWN0b3JLaW5kKTsKKyAgICBzdHJlYW0u
cHJpbnRsbigibV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiAiLCBtX2lzQXJyb3dGdW5j
dGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICBzdHJlYW0ucHJpbnRsbigicG9zaXRpb24oKS5saW5l
ICIsIHBvc2l0aW9uKCkubGluZSk7CisgICAgc3RyZWFtLnByaW50bG4oInBvc2l0aW9uKCkub2Zm
c2V0ICIsIHBvc2l0aW9uKCkub2Zmc2V0KTsKKyAgICBzdHJlYW0ucHJpbnRsbigicG9zaXRpb24o
KS5saW5lU3RhcnRPZmZzZXQgIiwgcG9zaXRpb24oKS5saW5lU3RhcnRPZmZzZXQpOworfQorCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25Ob2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKIEZ1bmN0aW9uTm9kZTo6RnVuY3Rpb25Ob2RlKFBhcnNlckFy
ZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwg
dW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhcmlhYmxlRW52
aXJvbm1lbnQmIHZhckVudmlyb25tZW50LCBGdW5jdGlvblN0YWNrJiYgZnVuY1N0YWNrLCBWYXJp
YWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzLCBVbmlxdWVkU3RyaW5nSW1wbFB0clNl
dCYmIHNsb3BweU1vZGVIb2lzdGVkRnVuY3Rpb25zLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFt
ZXRlcnMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0dXJl
cywgSW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzIGlubmVyQXJyb3dGdW5jdGlvbkNvZGVG
ZWF0dXJlcywgaW50IG51bUNvbnN0YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4mJikKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHJldmlzaW9uIDIzMzM1OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MTk4OCw2ICsxOTg4LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaW50IGZ1bmN0
aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0
LCAKICAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCB1bnNpZ25lZCBw
YXJhbWV0ZXJDb3VudCwKICAgICAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKAor
ICAgICAgICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBlbmQsIAorICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVk
IGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKKyAgICAgICAgICAgIGludCBm
dW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29u
dGV4dCwgCisgICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgdW5zaWdu
ZWQgcGFyYW1ldGVyQ291bnQsCisgICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworCisgICAgICAgIHZvaWQgZHVtcChQcmludFN0
cmVhbSYpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VD
b2RlJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CiAgICAgICAgIApAQCAtMjAy
OCw3ICsyMDM2LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAgICAgICAgIHVuc2ln
bmVkIGxhc3RMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TGluZTsgfQogCi0gICAgcHJvdGVj
dGVkOgorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRnVuY3Rpb25NZXRhZGF0YU5vZGUm
KSBjb25zdDsKKyAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZ1bmN0aW9uTWV0YWRhdGFO
b2RlJiBvdGhlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOworICAgICAgICB9CisKKyAgICBwdWJsaWM6CiAgICAgICAgIElkZW50aWZpZXIg
bV9pZGVudDsKICAgICAgICAgSWRlbnRpZmllciBtX2VjbWFOYW1lOwogICAgICAgICBJZGVudGlm
aWVyIG1faW5mZXJyZWROYW1lOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oCShyZXZpc2lvbiAyMzMzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTY0LDggKzE5NjQsMTEgQEAgc3RkOjp1bmlxdWVf
cHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKICAgICAgICAgaWYgKGJ1aWx0aW5Nb2RlID09IEpT
UGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4pIHsKLSAgICAgICAgICAgIGlmICghcmVzdWx0KQot
ICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiRXJyb3IgY29tcGlsaW5nIGJ1aWx0aW46ICIsIGVy
cm9yLm1lc3NhZ2UoKSk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAg
ICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOworICAgICAgICAgICAgICAgIGlmIChlcnJvci50
eXBlKCkgIT0gUGFyc2VyRXJyb3I6OlN0YWNrT3ZlcmZsb3cpCisgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2dMbigiVW5leHBlY3RlZCBlcnJvciBjb21waWxpbmcgYnVpbHRpbjogIiwgZXJyb3Iu
bWVzc2FnZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9PSBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsICJCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1
Y3RvciBzaG91bGQgYWx3YXlzIHVzZSBhIDgtYml0IHN0cmluZyIpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJFcnJvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJyb3IuaAkocmV2aXNpb24gMjMzMzU5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJFcnJvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC04Myw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBKU1Rva2VuJiB0b2tlbigpIGNv
bnN0IHsgcmV0dXJuIG1fdG9rZW47IH0KICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UoKSBjb25z
dCB7IHJldHVybiBtX21lc3NhZ2U7IH0KICAgICBpbnQgbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bGluZTsgfQorICAgIEVycm9yVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAK
ICAgICBKU09iamVjdCogdG9FcnJvck9iamVjdCgKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAkocmV2aXNpb24gMjMzMzU5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjAyLDYgKzIwMiwxNyBAQCBzdHJ1Y3QgSlNUZXh0UG9zaXRpb24gewogCiAgICAgb3Bl
cmF0b3IgaW50KCkgY29uc3QgeyByZXR1cm4gb2Zmc2V0OyB9CiAKKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgSlNUZXh0UG9zaXRpb24mIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIGxpbmUgPT0gb3RoZXIubGluZQorICAgICAgICAgICAgJiYgb2Zmc2V0ID09IG90aGVyLm9m
ZnNldAorICAgICAgICAgICAgJiYgbGluZVN0YXJ0T2Zmc2V0ID09IG90aGVyLmxpbmVTdGFydE9m
ZnNldDsKKyAgICB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBv
dGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAg
ICB9CisKICAgICBpbnQgbGluZTsKICAgICBpbnQgb2Zmc2V0OwogICAgIGludCBsaW5lU3RhcnRP
ZmZzZXQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaAko
cmV2aXNpb24gMjMzMzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VD
b2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDIxIEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIFNvdXJjZVByb3ZpZGVyKiBwcm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
dmlkZXIuZ2V0KCk7IH0KIAotICAgICAgICBTb3VyY2VDb2RlIHN1YkV4cHJlc3Npb24odW5zaWdu
ZWQgb3BlbkJyYWNlLCB1bnNpZ25lZCBjbG9zZUJyYWNlLCBpbnQgZmlyc3RMaW5lLCBpbnQgc3Rh
cnRDb2x1bW4pOworICAgICAgICBTb3VyY2VDb2RlIHN1YkV4cHJlc3Npb24odW5zaWduZWQgb3Bl
bkJyYWNlLCB1bnNpZ25lZCBjbG9zZUJyYWNlLCBpbnQgZmlyc3RMaW5lLCBpbnQgc3RhcnRDb2x1
bW4pIGNvbnN0OworCisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VDb2RlJiBv
dGhlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fZmlyc3RMaW5lID09
IG90aGVyLm1fZmlyc3RMaW5lCisgICAgICAgICAgICAgICAgJiYgbV9zdGFydENvbHVtbiA9PSBv
dGhlci5tX3N0YXJ0Q29sdW1uCisgICAgICAgICAgICAgICAgJiYgbV9wcm92aWRlciA9PSBvdGhl
ci5tX3Byb3ZpZGVyCisgICAgICAgICAgICAgICAgJiYgbV9zdGFydE9mZnNldCA9PSBvdGhlci5t
X3N0YXJ0T2Zmc2V0CisgICAgICAgICAgICAgICAgJiYgbV9lbmRPZmZzZXQgPT0gb3RoZXIubV9l
bmRPZmZzZXQ7CisgICAgICAgIH0KKworICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU291
cmNlQ29kZSYgb3RoZXIpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsKKyAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgT3JkaW5h
bE51bWJlciBtX2ZpcnN0TGluZTsKQEAgLTkxLDcgKzEwNSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICByZXR1cm4gU291cmNlQ29kZShTdHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNv
dXJjZSwgc291cmNlT3JpZ2luLCB1cmwsIHN0YXJ0UG9zaXRpb24sIHNvdXJjZVR5cGUpLCBzdGFy
dFBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9uLm1fY29sdW1uLm9u
ZUJhc2VkSW50KCkpOwogICAgIH0KICAgICAKLSAgICBpbmxpbmUgU291cmNlQ29kZSBTb3VyY2VD
b2RlOjpzdWJFeHByZXNzaW9uKHVuc2lnbmVkIG9wZW5CcmFjZSwgdW5zaWduZWQgY2xvc2VCcmFj
ZSwgaW50IGZpcnN0TGluZSwgaW50IHN0YXJ0Q29sdW1uKQorICAgIGlubGluZSBTb3VyY2VDb2Rl
IFNvdXJjZUNvZGU6OnN1YkV4cHJlc3Npb24odW5zaWduZWQgb3BlbkJyYWNlLCB1bnNpZ25lZCBj
bG9zZUJyYWNlLCBpbnQgZmlyc3RMaW5lLCBpbnQgc3RhcnRDb2x1bW4pIGNvbnN0CiAgICAgewog
ICAgICAgICBzdGFydENvbHVtbiArPSAxOyAvLyBDb252ZXJ0IHRvIGJhc2UgMS4KICAgICAgICAg
cmV0dXJuIFNvdXJjZUNvZGUoUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiB7IHByb3ZpZGVyKCkgfSwg
b3BlbkJyYWNlLCBjbG9zZUJyYWNlICsgMSwgZmlyc3RMaW5lLCBzdGFydENvbHVtbik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343927</attachid>
            <date>2018-06-29 12:13:41 -0700</date>
            <delta_ts>2018-06-29 16:40:32 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>33222</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzMzNjUpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI1IEBACisyMDE4LTA2LTI5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFdlIHNob3VsZG4ndCByZWN1cnNlIGludG8gdGhlIHBhcnNlciB3aGVu
IGdhdGhlcmluZyBtZXRhZGF0YSBhYm91dCB2YXJpb3VzIGZ1bmN0aW9uIG9mZnNldHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDA3NAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzcxNjU4OTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBM
YW0uCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvdHJ5LWdldC1ieS1pZC1iYXNpYy5qczoK
KyAgICAgICAgKGNvbnN0LmJlbmNoLmYuY29uc3QuZm9vUGx1c0Jhci5jcmVhdGVCdWlsdGluKToK
KyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvdHJ5LWdldC1ieS1pZC1wb2x5bW9ycGhpYy5qczoK
KyAgICAgICAgKGZvb1BsdXNCYXIuY3JlYXRlQnVpbHRpbik6CisgICAgICAgICogc3RyZXNzL2Fy
cmF5LXB1c2gtd2l0aC1mb3JjZS1leGl0LmpzOgorICAgICAgICAqIHN0cmVzcy9kb250LWNyYXNo
LW9uLXN0YWNrLW92ZXJmbG93LXdoZW4tcGFyc2luZy1idWlsdGluLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGYpOgorICAgICAgICAqIHN0cmVzcy9kb250LWNyYXNoLW9uLXN0YWNrLW92ZXJmbG93LXdo
ZW4tcGFyc2luZy1kZWZhdWx0LWNvbnN0cnVjdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6
CisgICAgICAgIChwcm90b3R5cGUucnVuTmVhclN0YWNrTGltaXQpOgorICAgICAgICAqIHN0cmVz
cy9pcy1jb25zdHJ1Y3Rvci5qczoKKyAgICAgICAgKiBzdHJlc3MvdGFpbENhbGxGb3J3YXJkQXJn
dW1lbnRzLmpzOgorICAgICAgICAocHV0RnVuY1RvUHJpdmF0ZU5hbWUuY3JlYXRlQnVpbHRpbik6
CisKIDIwMTgtMDYtMjcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IERGRydzIGNvbXBpbGVSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKCkgYW5kIGNvbXBpbGVBbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZSgpIHNsb3cgcGF0aHMgc2hvdWxkIGFsc28gY2xlYXIgdW51c2Vk
IHByb3BlcnRpZXMuCkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy90cnktZ2V0LWJ5LWlk
LWJhc2ljLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3RyeS1nZXQt
YnktaWQtYmFzaWMuanMJKHJldmlzaW9uIDIzMzM1OSkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL3RyeS1nZXQtYnktaWQtYmFzaWMuanMJKHdvcmtpbmcgY29weSkKQEAgLTgsNyArOCw3IEBA
IGNvbnN0IGNoZWNrID0gKGdvdCwgZXhwZWN0KSA9PiB7IGlmIChnb3QKIAogY29uc3QgYmVuY2gg
PSBmID0+IHsKICAgICAvLyBSZS1jcmVhdGUgdGhlIGJ1aWx0aW4gZWFjaCB0aW1lLCBzbyBlYWNo
IGJlbmNobWFyayBnZXRzIGl0cyBvd24gdmFsdWUgcHJlZGljdGlvbi4KLSAgICBjb25zdCBmb29Q
bHVzQmFyID0gY3JlYXRlQnVpbHRpbihgKGZ1bmN0aW9uKG8pIHsgcmV0dXJuIEB0cnlHZXRCeUlk
KG8sICJmb28iKSArIEB0cnlHZXRCeUlkKG8sICJiYXIiKTsgfSlgKTsKKyAgICBjb25zdCBmb29Q
bHVzQmFyID0gY3JlYXRlQnVpbHRpbihgKGZ1bmN0aW9uIChvKSB7IHJldHVybiBAdHJ5R2V0QnlJ
ZChvLCAiZm9vIikgKyBAdHJ5R2V0QnlJZChvLCAiYmFyIik7IH0pYCk7CiAgICAgbm9JbmxpbmUo
Zm9vUGx1c0Jhcik7CiAgICAgZihmb29QbHVzQmFyKTsKIH0KSW5kZXg6IEpTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL3RyeS1nZXQtYnktaWQtcG9seW1vcnBoaWMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvdHJ5LWdldC1ieS1pZC1wb2x5bW9ycGhpYy5qcwkocmV2aXNp
b24gMjMzMzU5KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvdHJ5LWdldC1ieS1pZC1wb2x5
bW9ycGhpYy5qcwkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAgdmFyIGl0ID0gMWU1Owog
CiBjb25zdCBjaGVjayA9IChnb3QsIGV4cGVjdCkgPT4geyBpZiAoZ290ICE9IGV4cGVjdCkgdGhy
b3cgIkVycm9yOiBiYWQgcmVzdWx0IGdvdCAiICsgZ290ICsgIiBleHBlY3RlZCAiICsgZXhwZWN0
OyB9OwogCi1mb29QbHVzQmFyID0gY3JlYXRlQnVpbHRpbihgKGZ1bmN0aW9uKG8pIHsgcmV0dXJu
IEB0cnlHZXRCeUlkKG8sICJmb28iKSArIEB0cnlHZXRCeUlkKG8sICJiYXIiKTsgfSlgKTsKK2Zv
b1BsdXNCYXIgPSBjcmVhdGVCdWlsdGluKGAoZnVuY3Rpb24gKG8pIHsgcmV0dXJuIEB0cnlHZXRC
eUlkKG8sICJmb28iKSArIEB0cnlHZXRCeUlkKG8sICJiYXIiKTsgfSlgKTsKIG5vSW5saW5lKGZv
b1BsdXNCYXIpOwogCiBjb25zdCBiZW5jaCA9IGYgPT4geyBmKCk7IH0KSW5kZXg6IEpTVGVzdHMv
c3RyZXNzL2FycmF5LXB1c2gtd2l0aC1mb3JjZS1leGl0LmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVz
dHMvc3RyZXNzL2FycmF5LXB1c2gtd2l0aC1mb3JjZS1leGl0LmpzCShyZXZpc2lvbiAyMzMzNTkp
CisrKyBKU1Rlc3RzL3N0cmVzcy9hcnJheS1wdXNoLXdpdGgtZm9yY2UtZXhpdC5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIHZhciBjcmVhdGVCdWlsdGluID0gJHZtLmNyZWF0ZUJ1
aWx0aW47CiAKLXZhciB0YXJnZXQgPSBjcmVhdGVCdWlsdGluKGAoZnVuY3Rpb24oYXJyYXkpCit2
YXIgdGFyZ2V0ID0gY3JlYXRlQnVpbHRpbihgKGZ1bmN0aW9uIChhcnJheSkKIHsKICAgICBpZiAo
YXJyYXkpIHsKICAgICAgICAgQGlkV2l0aFByb2ZpbGUoYXJyYXksICJTcGVjT3RoZXIiKS5wdXNo
KDQyKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2RvbnQtY3Jhc2gtb24tc3RhY2stb3ZlcmZsb3ct
d2hlbi1wYXJzaW5nLWJ1aWx0aW4uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvZG9u
dC1jcmFzaC1vbi1zdGFjay1vdmVyZmxvdy13aGVuLXBhcnNpbmctYnVpbHRpbi5qcwkobm9uZXhp
c3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9kb250LWNyYXNoLW9uLXN0YWNrLW92ZXJmbG93LXdo
ZW4tcGFyc2luZy1idWlsdGluLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKy8v
QCBydW5EZWZhdWx0KCItLXNvZnRSZXNlcnZlZFpvbmVTaXplPTE2Mzg0IiwgIi0tcmVzZXJ2ZWRa
b25lU2l6ZT0wIiwgIi0tdXNlSklUPTAiLCAiLS12YWxpZGF0ZUJ5dGVjb2RlPTEiLCAiLS1tYXhQ
ZXJUaHJlYWRTdGFja1VzYWdlPTUwMDAwMCIpCisKK2Z1bmN0aW9uIGYoKSB7CisgICAgdHJ5IHsK
KyAgICAgICAgZigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIE1hcC5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKCcnLCB7fSk7CisgICAgICAgIH0gY2F0Y2gg
KGUpIHt9CisgICAgfQorfQorCitmKCkKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2RvbnQtY3Jhc2gt
b24tc3RhY2stb3ZlcmZsb3ctd2hlbi1wYXJzaW5nLWRlZmF1bHQtY29uc3RydWN0b3IuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvZG9udC1jcmFzaC1vbi1zdGFjay1vdmVyZmxvdy13
aGVuLXBhcnNpbmctZGVmYXVsdC1jb25zdHJ1Y3Rvci5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rl
c3RzL3N0cmVzcy9kb250LWNyYXNoLW9uLXN0YWNrLW92ZXJmbG93LXdoZW4tcGFyc2luZy1kZWZh
dWx0LWNvbnN0cnVjdG9yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKKy8vQCBy
dW5EZWZhdWx0KCItLXNvZnRSZXNlcnZlZFpvbmVTaXplPTE2Mzg0IiwgIi0tcmVzZXJ2ZWRab25l
U2l6ZT0wIiwgIi0tdXNlSklUPTAiLCAiLS12YWxpZGF0ZUJ5dGVjb2RlPTEiLCAiLS1tYXhQZXJU
aHJlYWRTdGFja1VzYWdlPTUwMDAwMCIpCisKK2Z1bmN0aW9uIHJ1bk5lYXJTdGFja0xpbWl0KGYp
IHsKKyAgICBmdW5jdGlvbiB0KCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJu
IHQoKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgbmV3IGNsYXNzIGV4dGVu
ZHMgKGNsYXNzIHt9KSB7fSgpOworICAgICAgICAgICAgcmV0dXJuIGYoKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gdCgpOworfQorZnVuY3Rpb24gZm9vKCkgeworICAgIG5ldyBjbGFz
cyBleHRlbmRzIChjbGFzcyB7fSkge30oKTsKK30KK3J1bk5lYXJTdGFja0xpbWl0KCgpID0+IHsg
cmV0dXJuIGZvbygpOyB9KTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2lzLWNvbnN0cnVjdG9yLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2lzLWNvbnN0cnVjdG9yLmpzCShyZXZpc2lv
biAyMzMzNTkpCisrKyBKU1Rlc3RzL3N0cmVzcy9pcy1jb25zdHJ1Y3Rvci5qcwkod29ya2luZyBj
b3B5KQpAQCAtNSw3ICs1LDcgQEAgZnVuY3Rpb24gYXNzZXJ0KHgpIHsKICAgICAgICAgdGhyb3cg
RXJyb3IoIkJhZCIpOwogfQogCi1sZXQgaXNDb25zdHJ1Y3RvciA9IGNyZWF0ZUJ1aWx0aW4oIihm
dW5jdGlvbihjKSB7IHJldHVybiBAaXNDb25zdHJ1Y3RvcihjKTsgfSkiKTsKK2xldCBpc0NvbnN0
cnVjdG9yID0gY3JlYXRlQnVpbHRpbigiKGZ1bmN0aW9uIChjKSB7IHJldHVybiBAaXNDb25zdHJ1
Y3RvcihjKTsgfSkiKTsKIAogLy8gRnVuY3Rpb25zLgogYXNzZXJ0KGlzQ29uc3RydWN0b3IoYXNz
ZXJ0KSk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy90YWlsQ2FsbEZvcndhcmRBcmd1bWVudHMuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvdGFpbENhbGxGb3J3YXJkQXJndW1lbnRzLmpz
CShyZXZpc2lvbiAyMzMzNTkpCisrKyBKU1Rlc3RzL3N0cmVzcy90YWlsQ2FsbEZvcndhcmRBcmd1
bWVudHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiB2YXIgY3JlYXRlQnVpbHRp
biA9ICR2bS5jcmVhdGVCdWlsdGluOwogCiAvLyBUaGlzIGlzIHByZXR0eSBiYWQgYnV0IEkgbmVl
ZCBhIHByaXZhdGUgbmFtZS4KLXZhciBwdXRGdW5jVG9Qcml2YXRlTmFtZSA9IGNyZWF0ZUJ1aWx0
aW4oYChmdW5jdGlvbihmdW5jKSB7IEBhcnJheUl0ZXJhdG9ySXNEb25lID0gZnVuYyB9KWApCit2
YXIgcHV0RnVuY1RvUHJpdmF0ZU5hbWUgPSBjcmVhdGVCdWlsdGluKGAoZnVuY3Rpb24gKGZ1bmMp
IHsgQGFycmF5SXRlcmF0b3JJc0RvbmUgPSBmdW5jIH0pYCkKIHB1dEZ1bmNUb1ByaXZhdGVOYW1l
KGZ1bmN0aW9uIChhLGIpIHsgcmV0dXJuIGI7IH0pCiAKIGZ1bmN0aW9uIGNyZWF0ZVRhaWxDYWxs
Rm9yd2FyZGluZ0Z1bmNXaXRoKGJvZHksIHRoaXNWYWx1ZSkgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMzMzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTgtMDYtMjkgIFNhYW0g
QmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgV2Ugc2hvdWxkbid0IHJlY3Vy
c2UgaW50byB0aGUgcGFyc2VyIHdoZW4gZ2F0aGVyaW5nIG1ldGFkYXRhIGFib3V0IHZhcmlvdXMg
ZnVuY3Rpb24gb2Zmc2V0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg0MDc0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNzE2NTg5Nz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4KKworICAgICAgICBQcmlvciB0byB0aGlzIHBhdGNo
LCB3aGVuIHdlIG1hZGUgYSBidWlsdGluLCB3ZSBoYWQgdG8gbWFrZSBhbiBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZQorICAgICAgICBmb3IgdGhhdCBidWlsdGluLiBUaGlzIHJlcXVpcmVkIGNh
bGxpbmcgaW50byB0aGUgcGFyc2VyLiBIb3dldmVyLCB0aGUgcGFyc2VyCisgICAgICAgIG1heSB0
aHJvdyBhIHN0YWNrIG92ZXJmbG93LiBXZSB3ZXJlIG5vdCBhYmxlIHRvIHJlY292ZXIgZnJvbSB0
aGF0LiBUaGUgb25seQorICAgICAgICByZWFzb24gd2UgY2FsbGVkIGludG8gdGhlIHBhcnNlciBo
ZXJlIGlzIHRoYXQgd2Ugd2VyZSBnYXRoZXJpbmcgdGV4dCBvZmZzZXRzCisgICAgICAgIGFuZCB2
YXJpb3VzIG1ldGFkYXRhIGZvciB0aGluZ3MgaW4gdGhlIGJ1aWx0aW4gZnVuY3Rpb24uIFRoaXMg
cGF0Y2ggd3JpdGVzIGEKKyAgICAgICAgbWluaSBwYXJzZXIgdGhhdCBmaWd1cmVzIHRoaXMgaW5m
b3JtYXRpb24gb3V0IHdpdGhvdXQgY2FsbGluZyBpbnRvIHRoZSBmdWxsCisgICAgICAgIHBhcnNl
ci4gKEkndmUgYWxzbyBhZGRlZCBhIGRlYnVnIGFzc2VydCB0aGF0IHZlcmlmaWVzIHRoZSBtaW5p
IHBhcnNlciBzdGF5cyBpbgorICAgICAgICBzeW5jIHdpdGggdGhlIGZ1bGwgcGFyc2VyLikgVGhl
IHJlc3VsdCBvZiB0aGlzIGlzIHRoYXQgQnVpbHRpbkV4ZWN1dGJsZXM6OmNyZWF0ZUV4ZWN1dGFi
bGUKKyAgICAgICAgYWx3YXlzIHN1Y2NlZWRzLgorCisgICAgICAgICogYnVpbHRpbnMvQXN5bmNG
cm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5jcmVh
dGVBc3luY0Zyb21TeW5jSXRlcmF0b3IpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5Bc3luY0Zy
b21TeW5jSXRlcmF0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVF
eGVjdXRhYmxlKToKKyAgICAgICAgKiBidWlsdGlucy9HbG9iYWxPcGVyYXRpb25zLmpzOgorICAg
ICAgICAoZ2xvYmFsUHJpdmF0ZS5nZXR0ZXIub3ZlcnJpZGRlbk5hbWUuc3RyaW5nX2FwcGVhcmVk
X2hlcmUuc3BlY2llc0dldHRlcik6CisgICAgICAgIChnbG9iYWxQcml2YXRlLnNwZWNpZXNDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmNvcHlEYXRhUHJvcGVydGllcyk6Cisg
ICAgICAgIChnbG9iYWxQcml2YXRlLmNvcHlEYXRhUHJvcGVydGllc05vRXhjbHVzaW9ucyk6Cisg
ICAgICAgICogYnVpbHRpbnMvUHJvbWlzZU9wZXJhdGlvbnMuanM6CisgICAgICAgIChnbG9iYWxQ
cml2YXRlLm5ld0hhbmRsZWRSZWplY3RlZFByb21pc2UpOgorICAgICAgICAqIGJ1aWx0aW5zL1Jl
Z0V4cFByb3RvdHlwZS5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuaGFzT2JzZXJ2YWJsZVNp
ZGVFZmZlY3RzRm9yUmVnRXhwTWF0Y2gpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5oYXNPYnNl
cnZhYmxlU2lkZUVmZmVjdHNGb3JSZWdFeHBTcGxpdCk6CisgICAgICAgICogYnVpbHRpbnMvU3Ry
aW5nUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5oYXNPYnNlcnZhYmxlU2lk
ZUVmZmVjdHNGb3JTdHJpbmdSZXBsYWNlKToKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuZ2V0RGVm
YXVsdENvbGxhdG9yKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAgICAgICAoSlND
OjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBwYXJzZXIv
Tm9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OnBhcnNl
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyRXJyb3IuaDoKKyAgICAgICAgKEpTQzo6UGFyc2Vy
RXJyb3I6OnR5cGUgY29uc3QpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJUb2tlbnMuaDoKKyAg
ICAgICAgKEpTQzo6SlNUZXh0UG9zaXRpb246Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAo
SlNDOjpKU1RleHRQb3NpdGlvbjo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgICogcGFyc2Vy
L1NvdXJjZUNvZGUuaDoKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZTo6b3BlcmF0b3I9PSBjb25z
dCk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGU6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAg
ICAoSlNDOjpTb3VyY2VDb2RlOjpzdWJFeHByZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
U291cmNlQ29kZTo6c3ViRXhwcmVzc2lvbik6IERlbGV0ZWQuCisKIDIwMTgtMDYtMjggIE1pY2hh
ZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAgIAogICAgICAgICBJc29DZWxsU2V0Ojpz
d2VlcFRvRnJlZUxpc3QoKSBub3Qgc2FmZSB3aGVuIEZ1bGwgR0MgaW4gcHJvY2VzcwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3Rv
dHlwZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5
bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmpzCShyZXZpc2lvbiAyMzMzNTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBl
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsNiArMTUxLDggQEAgZnVuY3Rpb24gdGhyb3coZXhj
ZXB0aW9uKQogQGdsb2JhbFByaXZhdGUKIGZ1bmN0aW9uIGNyZWF0ZUFzeW5jRnJvbVN5bmNJdGVy
YXRvcihzeW5jSXRlcmF0b3IsIG5leHRNZXRob2QpCiB7CisgICAgInVzZSBzdHJpY3QiOworCiAg
ICAgaWYgKCFAaXNPYmplY3Qoc3luY0l0ZXJhdG9yKSkKICAgICAgICAgQHRocm93VHlwZUVycm9y
KCdPbmx5IG9iamVjdHMgY2FuIGJlIHdyYXBwZWQgYnkgYXN5bmMtZnJvbS1zeW5jIHdyYXBwZXIn
KTsKIApAQCAtMTYxLDYgKzE2Myw4IEBAIGZ1bmN0aW9uIGNyZWF0ZUFzeW5jRnJvbVN5bmNJdGVy
YXRvcihzeW4KIEBjb25zdHJ1Y3RvcgogZnVuY3Rpb24gQXN5bmNGcm9tU3luY0l0ZXJhdG9yQ29u
c3RydWN0b3Ioc3luY0l0ZXJhdG9yLCBuZXh0TWV0aG9kKQogeworICAgICJ1c2Ugc3RyaWN0IjsK
KwogICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAic3luY0l0ZXJhdG9yIiwgc3luY0l0
ZXJhdG9yKTsKICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUodGhpcywgIm5leHRNZXRob2QiLCBu
ZXh0TWV0aG9kKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluRXhlY3V0YWJsZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCShyZXZpc2lvbiAyMzMzNTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODUsNDAgKzg1LDE3NCBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
Y3JlYXRlQnVpbHRpCiAKIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0
YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IGNvbnN0IElkZW50aWZpZXImIG5hbWUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQs
IENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSkKIHsKKyAgICAvLyBTb21lb25lIHNo
b3VsZCBnZXQgbWFkIGF0IG1lIGZvciB3cml0aW5nIHRoaXMgY29kZS4gQnV0LCBpdCBwcmV2ZW50
cyB1cyBmcm9tIHJlY3Vyc2luZyBpbnRvCisgICAgLy8gdGhlIHBhcnNlciwgYW5kIGhlbmNlLCBm
cm9tIHRocm93aW5nIHN0YWNrIG92ZXJmbG93IHdoZW4gcGFyc2luZyBhIGJ1aWx0aW4uCisgICAg
U3RyaW5nVmlldyB2aWV3ID0gc291cmNlLnZpZXcoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghdmll
dy5pc051bGwoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQodmlldy5pczhCaXQoKSk7CisgICAgYXV0
byogY2hhcmFjdGVycyA9IHZpZXcuY2hhcmFjdGVyczgoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2
aWV3Lmxlbmd0aCgpID49IDE1KTsgLy8gc3RybGVuKCIoZnVuY3Rpb24gKCl7fSkiKSA9PSAxNQor
ICAgIFJFTEVBU0VfQVNTRVJUKGNoYXJhY3RlcnNbMF0gPT0gICcoJyk7CisgICAgUkVMRUFTRV9B
U1NFUlQoY2hhcmFjdGVyc1sxXSA9PSAgJ2YnKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjaGFyYWN0
ZXJzWzJdID09ICAndScpOworICAgIFJFTEVBU0VfQVNTRVJUKGNoYXJhY3RlcnNbM10gPT0gICdu
Jyk7CisgICAgUkVMRUFTRV9BU1NFUlQoY2hhcmFjdGVyc1s0XSA9PSAgJ2MnKTsKKyAgICBSRUxF
QVNFX0FTU0VSVChjaGFyYWN0ZXJzWzVdID09ICAndCcpOworICAgIFJFTEVBU0VfQVNTRVJUKGNo
YXJhY3RlcnNbNl0gPT0gICdpJyk7CisgICAgUkVMRUFTRV9BU1NFUlQoY2hhcmFjdGVyc1s3XSA9
PSAgJ28nKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjaGFyYWN0ZXJzWzhdID09ICAnbicpOworICAg
IFJFTEVBU0VfQVNTRVJUKGNoYXJhY3RlcnNbOV0gPT0gICcgJyk7CisgICAgUkVMRUFTRV9BU1NF
UlQoY2hhcmFjdGVyc1sxMF0gPT0gJygnKTsKKworICAgIEpTVG9rZW5Mb2NhdGlvbiBzdGFydDsK
KyAgICBzdGFydC5saW5lID0gLTE7CisgICAgc3RhcnQubGluZVN0YXJ0T2Zmc2V0ID0gLTE7Cisg
ICAgc3RhcnQuc3RhcnRPZmZzZXQgPSAxMDsKKyAgICBzdGFydC5lbmRPZmZzZXQgPSAtMTsKKwor
ICAgIEpTVG9rZW5Mb2NhdGlvbiBlbmQ7CisgICAgZW5kLmxpbmUgPSAxOworICAgIGVuZC5saW5l
U3RhcnRPZmZzZXQgPSAwOworICAgIGVuZC5zdGFydE9mZnNldCA9IDE7CisgICAgZW5kLmVuZE9m
ZnNldCA9IC0xOworCisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSAxMDsgLy8gc3RybGVuKCJm
dW5jdGlvbiAoIikgPT0gMTAKKyAgICBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQgPSAxOyAvLyAo
ZgorICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCA9IDEwOworICAgIGludCBwYXJhbWV0ZXJzU3Rh
cnQgPSAxMDsKKyAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0ID0gZmFsc2U7CisgICAgYm9vbCBp
c0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA9IGZhbHNlOworCisgICAgdW5zaWduZWQgcGFy
YW1ldGVyQ291bnQ7CisgICAgeworICAgICAgICB1bnNpZ25lZCBpID0gMTE7CisgICAgICAgIHVu
c2lnbmVkIGNvbW1hcyA9IDA7CisgICAgICAgIGJvb2wgc2F3T25lUGFyYW0gPSBmYWxzZTsKKyAg
ICAgICAgYm9vbCBoYXNSZXN0UGFyYW0gPSBmYWxzZTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsK
KyAgICAgICAgICAgIEFTU0VSVChpIDwgdmlldy5sZW5ndGgoKSk7CisgICAgICAgICAgICBpZiAo
Y2hhcmFjdGVyc1tpXSA9PSAnKScpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgIGlmIChjaGFyYWN0ZXJzW2ldID09ICcsJykKKyAgICAgICAgICAgICAgICArK2NvbW1hczsK
KyAgICAgICAgICAgIGVsc2UgaWYgKCFMZXhlcjxMQ2hhcj46OmlzV2hpdGVTcGFjZShjaGFyYWN0
ZXJzW2ldKSkKKyAgICAgICAgICAgICAgICBzYXdPbmVQYXJhbSA9IHRydWU7CisKKyAgICAgICAg
ICAgIGlmIChpICsgMiA8IHZpZXcubGVuZ3RoKCkgJiYgY2hhcmFjdGVyc1tpXSA9PSAnLicgJiYg
Y2hhcmFjdGVyc1tpICsgMV0gPT0gJy4nICYmIGNoYXJhY3RlcnNbaSArIDJdID09ICcuJykgewor
ICAgICAgICAgICAgICAgIGhhc1Jlc3RQYXJhbSA9IHRydWU7CisgICAgICAgICAgICAgICAgaSAr
PSAyOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICArK2k7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoY29tbWFzKQorICAgICAgICAgICAgcGFyYW1ldGVyQ291bnQgPSBjb21tYXMgKyAx
OworICAgICAgICBlbHNlIGlmIChzYXdPbmVQYXJhbSkKKyAgICAgICAgICAgIHBhcmFtZXRlckNv
dW50ID0gMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFyYW1ldGVyQ291bnQgPSAwOwor
CisgICAgICAgIGlmIChoYXNSZXN0UGFyYW0pIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KHBhcmFtZXRlckNvdW50KTsKKyAgICAgICAgICAgIC0tcGFyYW1ldGVyQ291bnQ7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSAwOworICAgIHVuc2lnbmVkIGVu
ZENvbHVtbiA9IDA7CisgICAgdW5zaWduZWQgb2Zmc2V0T2ZMYXN0TmV3bGluZSA9IDA7CisgICAg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gb2Zmc2V0T2ZTZWNvbmRUb0xhc3ROZXdsaW5lOworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2aWV3Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAg
aWYgKGNoYXJhY3RlcnNbaV0gPT0gJ1xuJykgeworICAgICAgICAgICAgaWYgKGxpbmVDb3VudCkK
KyAgICAgICAgICAgICAgICBvZmZzZXRPZlNlY29uZFRvTGFzdE5ld2xpbmUgPSBvZmZzZXRPZkxh
c3ROZXdsaW5lOworICAgICAgICAgICAgKytsaW5lQ291bnQ7CisgICAgICAgICAgICBlbmRDb2x1
bW4gPSAwOworICAgICAgICAgICAgb2Zmc2V0T2ZMYXN0TmV3bGluZSA9IGk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgKytlbmRDb2x1bW47CisKKyAgICAgICAgaWYgKCFpc0luU3RyaWN0
Q29udGV4dCAmJiAoY2hhcmFjdGVyc1tpXSA9PSAnIicgfHwgY2hhcmFjdGVyc1tpXSA9PSAnXCcn
KSkgeworICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgdXNlU3RyaWN0TGVuZ3RoID0gc3RybGVu
KCJ1c2Ugc3RyaWN0Iik7CisgICAgICAgICAgICBpZiAoaSArIDEgKyB1c2VTdHJpY3RMZW5ndGgg
PCB2aWV3Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtZW1jbXAoY2hhcmFjdGVy
cyArIGkgKyAxLCAidXNlIHN0cmljdCIsIHVzZVN0cmljdExlbmd0aCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaXNJblN0cmljdENvbnRleHQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBp
ICs9IDEgKyB1c2VTdHJpY3RMZW5ndGg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgcG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZUxpbmVTdGFydE9mZnNldCA9IG9mZnNldE9mU2Vjb25kVG9MYXN0TmV3bGluZSA/ICpvZmZz
ZXRPZlNlY29uZFRvTGFzdE5ld2xpbmUgKyAxIDogMDsKKworICAgIGludCBjbG9zZUJyYWNlT2Zm
c2V0RnJvbUVuZCA9IDE7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKGNoYXJhY3Rl
cnNbdmlldy5sZW5ndGgoKSAtIGNsb3NlQnJhY2VPZmZzZXRGcm9tRW5kXSA9PSAnfScpCisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgKytjbG9zZUJyYWNlT2Zmc2V0RnJvbUVuZDsKKyAgICB9
CisKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOwotICAgIFBh
cnNlckVycm9yIGVycm9yOworICAgIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUubGluZSA9IGxp
bmVDb3VudDsKKyAgICBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lLm9mZnNldCA9IG9mZnNldE9m
TGFzdE5ld2xpbmU7CisgICAgcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZS5saW5lU3RhcnRPZmZz
ZXQgPSBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lTGluZVN0YXJ0T2Zmc2V0OworCisgICAgU291
cmNlQ29kZSBuZXdTb3VyY2UgPSBzb3VyY2Uuc3ViRXhwcmVzc2lvbigxMCwgdmlldy5sZW5ndGgo
KSAtIGNsb3NlQnJhY2VPZmZzZXRGcm9tRW5kLCAwLCAxMCk7CiAgICAgYm9vbCBpc0J1aWx0aW5E
ZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yS2luZCAhPSBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmU7Ci0gICAgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSA9IGlzQnVpbHRp
bkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID8gSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRp
biA6IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW47CiAgICAgVW5saW5rZWRGdW5jdGlvbktp
bmQga2luZCA9IGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID8gVW5saW5rZWROb3Jt
YWxGdW5jdGlvbiA6IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigKLSAgICAgICAgJnZt
LCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsCi0gICAgICAgIEpTUGFyc2VyU3Ry
aWN0TW9kZTo6Tm90U3RyaWN0LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFNvdXJjZVBh
cnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwKLSAg
ICAgICAgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUsIGNvbnN0cnVjdG9yS2luZCk7Ci0KLSAg
ICBpZiAoIXByb2dyYW0pIHsKLSAgICAgICAgZGF0YUxvZygiRmF0YWwgZXJyb3IgY29tcGlsaW5n
IGJ1aWx0aW4gZnVuY3Rpb24gJyIsIG5hbWUuc3RyaW5nKCksICInOiAiLCBlcnJvci5tZXNzYWdl
KCkpOwotICAgICAgICBDUkFTSCgpOworCisgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUgbWV0YWRh
dGEoCisgICAgICAgIHN0YXJ0LCBlbmQsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LAorICAgICAg
ICBpc0luU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBjb25zdHJ1Y3RvcktpbmQgPT0g
Q29uc3RydWN0b3JLaW5kOjpFeHRlbmRzID8gU3VwZXJCaW5kaW5nOjpOZWVkZWQgOiBTdXBlckJp
bmRpbmc6Ok5vdE5lZWRlZCwKKyAgICAgICAgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9k
ZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisK
KyAgICBtZXRhZGF0YS5maW5pc2hQYXJzaW5nKG5ld1NvdXJjZSwgSWRlbnRpZmllcigpLCBGdW5j
dGlvbk1vZGU6OkZ1bmN0aW9uRXhwcmVzc2lvbik7CisgICAgbWV0YWRhdGEub3ZlcnJpZGVOYW1l
KG5hbWUpOworICAgIG1ldGFkYXRhLnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmUpOworCisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQgfHwgT3B0aW9uczo6dmFsaWRhdGVC
eXRlY29kZSgpKSB7CisgICAgICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmVGcm9tUGFyc2VyOworICAgICAgICBQYXJzZXJFcnJvciBlcnJvcjsKKyAgICAgICAgSlNQ
YXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSA9IGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0
cnVjdG9yID8gSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiA6IEpTUGFyc2VyQnVpbHRp
bk1vZGU6OkJ1aWx0aW47CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJv
Z3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigKKyAgICAgICAgICAgICZ2bSwgc291cmNlLCBJZGVu
dGlmaWVyKCksIGJ1aWx0aW5Nb2RlLAorICAgICAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpO
b3RTdHJpY3QsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU291cmNlUGFyc2VNb2RlOjpQ
cm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yLAorICAgICAgICAgICAg
JnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmVGcm9tUGFyc2VyLCBjb25zdHJ1Y3RvcktpbmQpOwor
CisgICAgICAgIGlmIChwcm9ncmFtKSB7CisgICAgICAgICAgICBTdGF0ZW1lbnROb2RlKiBleHBy
U3RhdGVtZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50KCk7CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChleHByU3RhdGVtZW50KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4
cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICAgICAgICAgIEV4cHJlc3Npb25O
b2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oZXhwclN0YXRl
bWVudCktPmV4cHIoKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHByKTsKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKKyAg
ICAgICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtZXRhZGF0YUZyb21QYXJzZXIgPSBzdGF0
aWNfY2FzdDxGdW5jRXhwck5vZGUqPihmdW5jRXhwciktPm1ldGFkYXRhKCk7CisgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghcHJvZ3JhbS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIG1ldGFkYXRhRnJvbVBhcnNlci0+c2V0RW5kUG9zaXRpb24o
cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZUZyb21QYXJzZXIpOworICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQobWV0YWRhdGFGcm9tUGFyc2VyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1ldGFkYXRhRnJvbVBhcnNlci0+aWRlbnQoKS5pc051bGwoKSk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1dCBzdHJpbmcgdGhhdCB3
b3VsZCByZXN1bHQgaW4gYSBzaW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9uIGV4cHJlc3Npb24uCisg
ICAgICAgICAgICBtZXRhZGF0YUZyb21QYXJzZXItPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVm
b3JlTGFzdE5ld2xpbmVGcm9tUGFyc2VyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1l
dGFkYXRhRnJvbVBhcnNlcik7CisgICAgICAgICAgICBtZXRhZGF0YUZyb21QYXJzZXItPm92ZXJy
aWRlTmFtZShuYW1lKTsKKyAgICAgICAgICAgIG1ldGFkYXRhRnJvbVBhcnNlci0+c2V0RW5kUG9z
aXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZUZyb21QYXJzZXIpOworCisgICAgICAgICAg
ICBpZiAobWV0YWRhdGEgIT0gKm1ldGFkYXRhRnJvbVBhcnNlciB8fCBwb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lRnJvbVBhcnNlciAhPSBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKSB7CisgICAg
ICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJNZXRhZGF0YSBvZiBwYXJzZXIgYW5kIGhhbmQgcm9s
bGVkIHBhcnNlciBkb24ndCBtYXRjaFxuIik7CisgICAgICAgICAgICAgICAgQ1JBU0goKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGVycm9yLmlzVmFsaWQoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChlcnJvci50eXBl
KCkgPT0gUGFyc2VyRXJyb3I6OlN0YWNrT3ZlcmZsb3cpOworICAgICAgICB9CiAgICAgfQogCi0g
ICAgU3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVu
dCgpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOwotICAgIFJFTEVBU0VfQVNT
RVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKLSAgICBFeHByZXNzaW9uTm9k
ZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KGV4cHJTdGF0ZW1l
bnQpLT5leHByKCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHIpOwotICAgIFJFTEVBU0Vf
QVNTRVJUKGZ1bmNFeHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKLSAgICBGdW5jdGlvbk1ldGFkYXRh
Tm9kZSogbWV0YWRhdGEgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihmdW5jRXhwciktPm1l
dGFkYXRhKCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoIXByb2dyYW0tPmhhc0NhcHR1cmVkVmFyaWFi
bGVzKCkpOwotICAgIAotICAgIG1ldGFkYXRhLT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lKTsKLSAgICBSRUxFQVNFX0FTU0VSVChtZXRhZGF0YSk7Ci0gICAgUkVMRUFT
RV9BU1NFUlQobWV0YWRhdGEtPmlkZW50KCkuaXNOdWxsKCkpOwotICAgIAotICAgIC8vIFRoaXMg
ZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1dCBzdHJpbmcgdGhhdCB3b3VsZCByZXN1bHQgaW4gYSBz
aW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9uIGV4cHJlc3Npb24uCi0gICAgbWV0YWRhdGEtPnNldEVu
ZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwotICAgIFJFTEVBU0VfQVNTRVJU
KG1ldGFkYXRhKTsKLSAgICBtZXRhZGF0YS0+b3ZlcnJpZGVOYW1lKG5hbWUpOwogICAgIFZhcmlh
YmxlRW52aXJvbm1lbnQgZHVtbXlURFpWYXJpYWJsZXM7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBK
U1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIGR1bW15VERaVmFyaWFibGVzLCBEZXJpdmVkQ29u
dGV4dFR5cGU6Ok5vbmUsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKKyAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgJm1ldGFkYXRhLCBraW5kLCBj
b25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIGR1bW15VERaVmFy
aWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0Nv
bnN0cnVjdG9yKTsKICAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxlOwogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT3BlcmF0aW9ucy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT3BlcmF0aW9ucy5q
cwkocmV2aXNpb24gMjMzMzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0ds
b2JhbE9wZXJhdGlvbnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTYyLDEyICs2MiwxNSBAQCBmdW5j
dGlvbiBpc0RpY3Rpb25hcnkob2JqZWN0KQogQG92ZXJyaWRkZW5OYW1lPSJnZXQgW1N5bWJvbC5z
cGVjaWVzXSIKIGZ1bmN0aW9uIHNwZWNpZXNHZXR0ZXIoKQogeworICAgICJ1c2Ugc3RyaWN0IjsK
ICAgICByZXR1cm4gdGhpczsKIH0KIAogQGdsb2JhbFByaXZhdGUKIGZ1bmN0aW9uIHNwZWNpZXND
b25zdHJ1Y3RvcihvYmosIGRlZmF1bHRDb25zdHJ1Y3RvcikKIHsKKyAgICAidXNlIHN0cmljdCI7
CisKICAgICB2YXIgY29uc3RydWN0b3IgPSBvYmouY29uc3RydWN0b3I7CiAgICAgaWYgKGNvbnN0
cnVjdG9yID09PSBAdW5kZWZpbmVkKQogICAgICAgICByZXR1cm4gZGVmYXVsdENvbnN0cnVjdG9y
OwpAQCAtODQsNiArODcsOCBAQCBmdW5jdGlvbiBzcGVjaWVzQ29uc3RydWN0b3Iob2JqLCBkZWZh
dWx0CiBAZ2xvYmFsUHJpdmF0ZQogZnVuY3Rpb24gY29weURhdGFQcm9wZXJ0aWVzKHRhcmdldCwg
c291cmNlLCBleGNsdWRlZFNldCkKIHsKKyAgICAidXNlIHN0cmljdCI7CisKICAgICBpZiAoIUBp
c09iamVjdCh0YXJnZXQpKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoInRhcmdldCBuZWVkcyB0
byBiZSBhbiBvYmplY3QiKTsKIApAQCAtMTA5LDYgKzExNCw4IEBAIGZ1bmN0aW9uIGNvcHlEYXRh
UHJvcGVydGllcyh0YXJnZXQsIHNvdXIKIEBnbG9iYWxQcml2YXRlCiBmdW5jdGlvbiBjb3B5RGF0
YVByb3BlcnRpZXNOb0V4Y2x1c2lvbnModGFyZ2V0LCBzb3VyY2UpCiB7CisgICAgInVzZSBzdHJp
Y3QiOworCiAgICAgaWYgKCFAaXNPYmplY3QodGFyZ2V0KSkKICAgICAgICAgQHRocm93VHlwZUVy
cm9yKCJ0YXJnZXQgbmVlZHMgdG8gYmUgYW4gb2JqZWN0Iik7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlT3BlcmF0aW9ucy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZU9wZXJhdGlvbnMuanMJKHJldmlz
aW9uIDIzMzM1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlT3Bl
cmF0aW9ucy5qcwkod29ya2luZyBjb3B5KQpAQCAtODcsNiArODcsNyBAQCBmdW5jdGlvbiBuZXdQ
cm9taXNlQ2FwYWJpbGl0eShjb25zdHJ1Y3RvCiBAZ2xvYmFsUHJpdmF0ZQogZnVuY3Rpb24gbmV3
SGFuZGxlZFJlamVjdGVkUHJvbWlzZShlcnJvcikKIHsKKyAgICAidXNlIHN0cmljdCI7CiAgICAg
bGV0IHByb21pc2UgPSBAUHJvbWlzZS5AcmVqZWN0KGVycm9yKTsKICAgICBAcHV0QnlJZERpcmVj
dFByaXZhdGUocHJvbWlzZSwgInByb21pc2VJc0hhbmRsZWQiLCB0cnVlKTsKICAgICByZXR1cm4g
cHJvbWlzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWdFeHBQcm90
b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Jl
Z0V4cFByb3RvdHlwZS5qcwkocmV2aXNpb24gMjMzMzU5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL1JlZ0V4cFByb3RvdHlwZS5qcwkod29ya2luZyBjb3B5KQpAQCAtNjMsNyAr
NjMsMTAgQEAgZnVuY3Rpb24gcmVnRXhwRXhlYyhyZWdleHAsIHN0cikKIH0KIAogQGdsb2JhbFBy
aXZhdGUKLWZ1bmN0aW9uIGhhc09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclJlZ0V4cE1hdGNoKHJl
Z2V4cCkgeworZnVuY3Rpb24gaGFzT2JzZXJ2YWJsZVNpZGVFZmZlY3RzRm9yUmVnRXhwTWF0Y2go
cmVnZXhwKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKwogICAgIC8vIFRoaXMgaXMgYWNjZXNzZWQg
YnkgdGhlIFJlZ0V4cEV4ZWMgaW50ZXJuYWwgZnVuY3Rpb24uCiAgICAgbGV0IHJlZ2V4cEV4ZWMg
PSBAdHJ5R2V0QnlJZChyZWdleHAsICJleGVjIik7CiAgICAgaWYgKHJlZ2V4cEV4ZWMgIT09IEBy
ZWdFeHBCdWlsdGluRXhlYykKQEAgLTM1MSw3ICszNTQsMTAgQEAgZnVuY3Rpb24gc2VhcmNoKHN0
ckFyZykKIH0KIAogQGdsb2JhbFByaXZhdGUKLWZ1bmN0aW9uIGhhc09ic2VydmFibGVTaWRlRWZm
ZWN0c0ZvclJlZ0V4cFNwbGl0KHJlZ2V4cCkgeworZnVuY3Rpb24gaGFzT2JzZXJ2YWJsZVNpZGVF
ZmZlY3RzRm9yUmVnRXhwU3BsaXQocmVnZXhwKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKwogICAg
IC8vIFRoaXMgaXMgYWNjZXNzZWQgYnkgdGhlIFJlZ0V4cEV4ZWMgaW50ZXJuYWwgZnVuY3Rpb24u
CiAgICAgbGV0IHJlZ2V4cEV4ZWMgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJleGVjIik7CiAgICAg
aWYgKHJlZ2V4cEV4ZWMgIT09IEByZWdFeHBCdWlsdGluRXhlYykKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9TdHJpbmdQcm90b3R5cGUuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5qcwkocmV2aXNpb24g
MjMzMzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlw
ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMTkxLDcgKzE5MSwxMCBAQCBmdW5jdGlvbiBwYWRFbmQo
bWF4TGVuZ3RoLyosIGZpbGxTdHJpbmcqCiB9CiAKIEBnbG9iYWxQcml2YXRlCi1mdW5jdGlvbiBo
YXNPYnNlcnZhYmxlU2lkZUVmZmVjdHNGb3JTdHJpbmdSZXBsYWNlKHJlZ2V4cCwgcmVwbGFjZXIp
IHsKK2Z1bmN0aW9uIGhhc09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclN0cmluZ1JlcGxhY2UocmVn
ZXhwLCByZXBsYWNlcikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKICAgICBpZiAocmVwbGFjZXIg
IT09IEByZWdFeHBQcm90b3R5cGVTeW1ib2xSZXBsYWNlKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAKQEAgLTIzNSw2ICsyMzgsOCBAQCBmdW5jdGlvbiByZXBsYWNlKHNlYXJjaCwgcmVwbGFj
ZSkKIEBnbG9iYWxQcml2YXRlCiBmdW5jdGlvbiBnZXREZWZhdWx0Q29sbGF0b3IoKQogeworICAg
ICJ1c2Ugc3RyaWN0IjsKKwogICAgIHJldHVybiBAZ2V0RGVmYXVsdENvbGxhdG9yLmNvbGxhdG9y
IHx8IChAZ2V0RGVmYXVsdENvbGxhdG9yLmNvbGxhdG9yID0gbmV3IEBDb2xsYXRvcigpKTsKIH0K
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCShyZXZpc2lv
biAyMzMzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjE0LDYgKzIxNCwyOSBAQCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVu
Y3Rpb25NZXRhZGF0YU5vCiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKIH0KIAorRnVuY3Rpb25NZXRhZGF0YU5v
ZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAorICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnRMb2NhdGlvbiwgCisgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5z
aWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgCisgICAgaW50IGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQs
IGJvb2wgaXNJblN0cmljdENvbnRleHQsIAorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50
LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bikKKyAgICAgICAgOiBOb2RlKGVuZExvY2F0aW9uKQorICAgICAgICAsIG1fc3RhcnRDb2x1bW4o
c3RhcnRDb2x1bW4pCisgICAgICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQorICAgICAgICAs
IG1fZnVuY3Rpb25LZXl3b3JkU3RhcnQoZnVuY3Rpb25LZXl3b3JkU3RhcnQpCisgICAgICAgICwg
bV9mdW5jdGlvbk5hbWVTdGFydChmdW5jdGlvbk5hbWVTdGFydCkKKyAgICAgICAgLCBtX3BhcmFt
ZXRlcnNTdGFydChwYXJhbWV0ZXJzU3RhcnQpCisgICAgICAgICwgbV9zdGFydFN0YXJ0T2Zmc2V0
KHN0YXJ0TG9jYXRpb24uc3RhcnRPZmZzZXQpCisgICAgICAgICwgbV9wYXJhbWV0ZXJDb3VudChw
YXJhbWV0ZXJDb3VudCkKKyAgICAgICAgLCBtX3BhcnNlTW9kZShtb2RlKQorICAgICAgICAsIG1f
aXNJblN0cmljdENvbnRleHQoaXNJblN0cmljdENvbnRleHQpCisgICAgICAgICwgbV9zdXBlckJp
bmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCisgICAgICAgICwgbV9j
b25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCisg
ICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbikKK3sKKyAgICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpOworICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2lu
ZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7Cit9CisKIHZvaWQg
RnVuY3Rpb25NZXRhZGF0YU5vZGU6OmZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkK
IHsKICAgICBtX3NvdXJjZSA9IHNvdXJjZTsKQEAgLTIyNyw2ICsyNTAsNTUgQEAgdm9pZCBGdW5j
dGlvbk1ldGFkYXRhTm9kZTo6c2V0RW5kUG9zaXRpbwogICAgIG1fZW5kQ29sdW1uID0gcG9zaXRp
b24ub2Zmc2V0IC0gcG9zaXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogfQogCitib29sIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlOjpvcGVyYXRvcj09KGNvbnN0IEZ1bmN0aW9uTWV0YWRhdGFOb2RlJiBvdGhl
cikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pZGVudCA9PSBvdGhlci5tX2lkZW50CisgICAgICAg
ICYmIG1fZWNtYU5hbWUgPT0gb3RoZXIubV9lY21hTmFtZQorICAgICAgICAmJiBtX2luZmVycmVk
TmFtZSA9PSBvdGhlci5tX2luZmVycmVkTmFtZQorICAgICAgICAmJiBtX2Z1bmN0aW9uTW9kZT09
IG90aGVyLm1fZnVuY3Rpb25Nb2RlCisgICAgICAgICYmIG1fc3RhcnRDb2x1bW49PSBvdGhlci5t
X3N0YXJ0Q29sdW1uCisgICAgICAgICYmIG1fZW5kQ29sdW1uPT0gb3RoZXIubV9lbmRDb2x1bW4K
KyAgICAgICAgJiYgbV9mdW5jdGlvbktleXdvcmRTdGFydD09IG90aGVyLm1fZnVuY3Rpb25LZXl3
b3JkU3RhcnQKKyAgICAgICAgJiYgbV9mdW5jdGlvbk5hbWVTdGFydD09IG90aGVyLm1fZnVuY3Rp
b25OYW1lU3RhcnQKKyAgICAgICAgJiYgbV9wYXJhbWV0ZXJzU3RhcnQ9PSBvdGhlci5tX3BhcmFt
ZXRlcnNTdGFydAorICAgICAgICAmJiBtX3NvdXJjZT09IG90aGVyLm1fc291cmNlCisgICAgICAg
ICYmIG1fY2xhc3NTb3VyY2U9PSBvdGhlci5tX2NsYXNzU291cmNlCisgICAgICAgICYmIG1fc3Rh
cnRTdGFydE9mZnNldD09IG90aGVyLm1fc3RhcnRTdGFydE9mZnNldAorICAgICAgICAmJiBtX3Bh
cmFtZXRlckNvdW50PT0gb3RoZXIubV9wYXJhbWV0ZXJDb3VudAorICAgICAgICAmJiBtX2xhc3RM
aW5lPT0gb3RoZXIubV9sYXN0TGluZQorICAgICAgICAmJiBtX3BhcnNlTW9kZT09IG90aGVyLm1f
cGFyc2VNb2RlCisgICAgICAgICYmIG1faXNJblN0cmljdENvbnRleHQgPT0gb3RoZXIubV9pc0lu
U3RyaWN0Q29udGV4dCAKKyAgICAgICAgJiYgbV9zdXBlckJpbmRpbmcgPT0gb3RoZXIubV9zdXBl
ckJpbmRpbmcgCisgICAgICAgICYmIG1fY29uc3RydWN0b3JLaW5kID09IG90aGVyLm1fY29uc3Ry
dWN0b3JLaW5kIAorICAgICAgICAmJiBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID09
IG90aGVyLm1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24KKyAgICAgICAgJiYgbV9wb3Np
dGlvbiA9PSBvdGhlci5tX3Bvc2l0aW9uOworfQorCit2b2lkIEZ1bmN0aW9uTWV0YWRhdGFOb2Rl
OjpkdW1wKFByaW50U3RyZWFtJiBzdHJlYW0pIGNvbnN0Cit7CisgICAgc3RyZWFtLnByaW50bG4o
Im1faWRlbnQgIiwgbV9pZGVudCk7CisgICAgc3RyZWFtLnByaW50bG4oIm1fZWNtYU5hbWUgIiwg
bV9lY21hTmFtZSk7CisgICAgc3RyZWFtLnByaW50bG4oIm1faW5mZXJyZWROYW1lICIsIG1faW5m
ZXJyZWROYW1lKTsKKyAgICBzdHJlYW0ucHJpbnRsbigibV9mdW5jdGlvbk1vZGUgIiwgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KG1fZnVuY3Rpb25Nb2RlKSk7CisgICAgc3RyZWFtLnByaW50bG4oIm1f
c3RhcnRDb2x1bW4gIiwgbV9zdGFydENvbHVtbik7CisgICAgc3RyZWFtLnByaW50bG4oIm1fZW5k
Q29sdW1uICIsIG1fZW5kQ29sdW1uKTsKKyAgICBzdHJlYW0ucHJpbnRsbigibV9mdW5jdGlvbktl
eXdvcmRTdGFydCAiLCBtX2Z1bmN0aW9uS2V5d29yZFN0YXJ0KTsKKyAgICBzdHJlYW0ucHJpbnRs
bigibV9mdW5jdGlvbk5hbWVTdGFydCAiLCBtX2Z1bmN0aW9uTmFtZVN0YXJ0KTsKKyAgICBzdHJl
YW0ucHJpbnRsbigibV9wYXJhbWV0ZXJzU3RhcnQgIiwgbV9wYXJhbWV0ZXJzU3RhcnQpOworICAg
IHN0cmVhbS5wcmludGxuKCJtX2NsYXNzU291cmNlLmlzTnVsbCgpICIsIG1fY2xhc3NTb3VyY2Uu
aXNOdWxsKCkpOworICAgIHN0cmVhbS5wcmludGxuKCJtX3N0YXJ0U3RhcnRPZmZzZXQgIiwgbV9z
dGFydFN0YXJ0T2Zmc2V0KTsKKyAgICBzdHJlYW0ucHJpbnRsbigibV9wYXJhbWV0ZXJDb3VudCAi
LCBtX3BhcmFtZXRlckNvdW50KTsKKyAgICBzdHJlYW0ucHJpbnRsbigibV9sYXN0TGluZSAiLCBt
X2xhc3RMaW5lKTsKKyAgICBzdHJlYW0ucHJpbnRsbigibV9wYXJzZU1vZGUgIiwgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KG1fcGFyc2VNb2RlKSk7CisgICAgc3RyZWFtLnByaW50bG4oIm1faXNJblN0
cmljdENvbnRleHQgIiwgbV9pc0luU3RyaWN0Q29udGV4dCk7CisgICAgc3RyZWFtLnByaW50bG4o
Im1fc3VwZXJCaW5kaW5nICIsIG1fc3VwZXJCaW5kaW5nKTsKKyAgICBzdHJlYW0ucHJpbnRsbigi
bV9jb25zdHJ1Y3RvcktpbmQgIiwgbV9jb25zdHJ1Y3RvcktpbmQpOworICAgIHN0cmVhbS5wcmlu
dGxuKCJtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uICIsIG1faXNBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb24pOworICAgIHN0cmVhbS5wcmludGxuKCJwb3NpdGlvbigpLmxpbmUgIiwg
cG9zaXRpb24oKS5saW5lKTsKKyAgICBzdHJlYW0ucHJpbnRsbigicG9zaXRpb24oKS5vZmZzZXQg
IiwgcG9zaXRpb24oKS5vZmZzZXQpOworICAgIHN0cmVhbS5wcmludGxuKCJwb3NpdGlvbigpLmxp
bmVTdGFydE9mZnNldCAiLCBwb3NpdGlvbigpLmxpbmVTdGFydE9mZnNldCk7Cit9CisKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbk5vZGUgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAogRnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoUGFyc2VyQXJlbmEm
IHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNp
Z25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyaWFibGVFbnZpcm9u
bWVudCYgdmFyRW52aXJvbm1lbnQsIEZ1bmN0aW9uU3RhY2smJiBmdW5jU3RhY2ssIFZhcmlhYmxl
RW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYg
c2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVy
cywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBJ
bm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1
cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBSZWZQdHI8TW9kdWxlU2NvcGVEYXRhPiYmKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkocmV2aXNpb24gMjMzMzU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTg4
LDYgKzE5ODgsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBpbnQgZnVuY3Rpb25O
YW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAog
ICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIHVuc2lnbmVkIHBhcmFt
ZXRlckNvdW50LAogICAgICAgICAgICAgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5j
dGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUoCisgICAg
ICAgICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGVuZCwgCisgICAgICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5k
Q29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAorICAgICAgICAgICAgaW50IGZ1bmN0
aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0
LCAKKyAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCB1bnNpZ25lZCBw
YXJhbWV0ZXJDb3VudCwKKyAgICAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisKKyAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7CiAKICAgICAgICAgdm9pZCBmaW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUm
LCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Nb2RlKTsKICAgICAgICAgCkBAIC0yMDI4LDcg
KzIwMzYsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAgICAgICAgdW5zaWduZWQg
bGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RMaW5lOyB9CiAKLSAgICBwcm90ZWN0ZWQ6
CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGdW5jdGlvbk1ldGFkYXRhTm9kZSYpIGNv
bnN0OworICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRnVuY3Rpb25NZXRhZGF0YU5vZGUm
IG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7CisgICAgICAgIH0KKworICAgIHB1YmxpYzoKICAgICAgICAgSWRlbnRpZmllciBtX2lk
ZW50OwogICAgICAgICBJZGVudGlmaWVyIG1fZWNtYU5hbWU7CiAgICAgICAgIElkZW50aWZpZXIg
bV9pbmZlcnJlZE5hbWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgJ
KHJldmlzaW9uIDIzMzM1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5NjQsOCArMTk2NCwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8
UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5l
KQogICAgICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSgpOwogICAgICAgICBpZiAoYnVpbHRpbk1vZGUgPT0gSlNQYXJz
ZXJCdWlsdGluTW9kZTo6QnVpbHRpbikgewotICAgICAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAg
ICAgICAgICAgICAgZGF0YUxvZ0xuKCJFcnJvciBjb21waWxpbmcgYnVpbHRpbjogIiwgZXJyb3Iu
bWVzc2FnZSgpKTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICAgICAg
QVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CisgICAgICAgICAgICAgICAgaWYgKGVycm9yLnR5cGUo
KSAhPSBQYXJzZXJFcnJvcjo6U3RhY2tPdmVyZmxvdykKKyAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZ0xuKCJVbmV4cGVjdGVkIGVycm9yIGNvbXBpbGluZyBidWlsdGluOiAiLCBlcnJvci5tZXNz
YWdlKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShkZWZhdWx0Q29uc3RydWN0b3JLaW5kID09IENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgIkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9y
IHNob3VsZCBhbHdheXMgdXNlIGEgOC1iaXQgc3RyaW5nIik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlckVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXJFcnJvci5oCShyZXZpc2lvbiAyMzMzNTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckVycm9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTgzLDYgKzgzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IEpTVG9rZW4mIHRva2VuKCkgY29uc3Qg
eyByZXR1cm4gbV90b2tlbjsgfQogICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWVzc2FnZTsgfQogICAgIGludCBsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9saW5l
OyB9CisgICAgRXJyb3JUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAg
IEpTT2JqZWN0KiB0b0Vycm9yT2JqZWN0KAogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCShyZXZpc2lvbiAyMzMzNTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDIsNiArMjAyLDE3IEBAIHN0cnVjdCBKU1RleHRQb3NpdGlvbiB7CiAKICAgICBvcGVyYXRv
ciBpbnQoKSBjb25zdCB7IHJldHVybiBvZmZzZXQ7IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBKU1RleHRQb3NpdGlvbiYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bGluZSA9PSBvdGhlci5saW5lCisgICAgICAgICAgICAmJiBvZmZzZXQgPT0gb3RoZXIub2Zmc2V0
CisgICAgICAgICAgICAmJiBsaW5lU3RhcnRPZmZzZXQgPT0gb3RoZXIubGluZVN0YXJ0T2Zmc2V0
OworICAgIH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSlNUZXh0UG9zaXRpb24mIG90aGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0K
KwogICAgIGludCBsaW5lOwogICAgIGludCBvZmZzZXQ7CiAgICAgaW50IGxpbmVTdGFydE9mZnNl
dDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCShyZXZp
c2lvbiAyMzMzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgU291cmNlUHJvdmlkZXIqIHByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gbV9wcm92aWRl
ci5nZXQoKTsgfQogCi0gICAgICAgIFNvdXJjZUNvZGUgc3ViRXhwcmVzc2lvbih1bnNpZ25lZCBv
cGVuQnJhY2UsIHVuc2lnbmVkIGNsb3NlQnJhY2UsIGludCBmaXJzdExpbmUsIGludCBzdGFydENv
bHVtbik7CisgICAgICAgIFNvdXJjZUNvZGUgc3ViRXhwcmVzc2lvbih1bnNpZ25lZCBvcGVuQnJh
Y2UsIHVuc2lnbmVkIGNsb3NlQnJhY2UsIGludCBmaXJzdExpbmUsIGludCBzdGFydENvbHVtbikg
Y29uc3Q7CisKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNvdXJjZUNvZGUmIG90aGVy
KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9maXJzdExpbmUgPT0gb3Ro
ZXIubV9maXJzdExpbmUKKyAgICAgICAgICAgICAgICAmJiBtX3N0YXJ0Q29sdW1uID09IG90aGVy
Lm1fc3RhcnRDb2x1bW4KKyAgICAgICAgICAgICAgICAmJiBtX3Byb3ZpZGVyID09IG90aGVyLm1f
cHJvdmlkZXIKKyAgICAgICAgICAgICAgICAmJiBtX3N0YXJ0T2Zmc2V0ID09IG90aGVyLm1fc3Rh
cnRPZmZzZXQKKyAgICAgICAgICAgICAgICAmJiBtX2VuZE9mZnNldCA9PSBvdGhlci5tX2VuZE9m
ZnNldDsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTb3VyY2VD
b2RlJiBvdGhlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOworICAgICAgICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBPcmRpbmFsTnVt
YmVyIG1fZmlyc3RMaW5lOwpAQCAtOTEsNyArMTA1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHJldHVybiBTb3VyY2VDb2RlKFN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc291cmNl
LCBzb3VyY2VPcmlnaW4sIHVybCwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlwZSksIHN0YXJ0UG9z
aXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1bW4ub25lQmFz
ZWRJbnQoKSk7CiAgICAgfQogICAgIAotICAgIGlubGluZSBTb3VyY2VDb2RlIFNvdXJjZUNvZGU6
OnN1YkV4cHJlc3Npb24odW5zaWduZWQgb3BlbkJyYWNlLCB1bnNpZ25lZCBjbG9zZUJyYWNlLCBp
bnQgZmlyc3RMaW5lLCBpbnQgc3RhcnRDb2x1bW4pCisgICAgaW5saW5lIFNvdXJjZUNvZGUgU291
cmNlQ29kZTo6c3ViRXhwcmVzc2lvbih1bnNpZ25lZCBvcGVuQnJhY2UsIHVuc2lnbmVkIGNsb3Nl
QnJhY2UsIGludCBmaXJzdExpbmUsIGludCBzdGFydENvbHVtbikgY29uc3QKICAgICB7CiAgICAg
ICAgIHN0YXJ0Q29sdW1uICs9IDE7IC8vIENvbnZlcnQgdG8gYmFzZSAxLgogICAgICAgICByZXR1
cm4gU291cmNlQ29kZShSZWZQdHI8U291cmNlUHJvdmlkZXI+IHsgcHJvdmlkZXIoKSB9LCBvcGVu
QnJhY2UsIGNsb3NlQnJhY2UgKyAxLCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1uKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>